:root{--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-brand: Georgia, "Times New Roman", serif;--bg: #f6f5f0;--surface: #ffffff;--surface-muted: #f0efe8;--surface-sunken: #e9e8e0;--border: #e3e2da;--border-strong: #8c9288;--text: #1f2420;--text-secondary: #4a4f47;--text-muted: #5f675c;--text-disabled: #8c9288;--text-on-brand: #ffffff;--overlay: rgb(31 36 32 / .45);--brand: #2f6b3a;--brand-hover: #255630;--brand-soft: #eaf3ea;--brand-line: #b5d7bd;--sun: #e2aa27;--success: #1f6a3a;--success-bg: #e6f2e8;--success-line: #b5d7bd;--warning: #8a5300;--warning-bg: #fdf3dc;--warning-line: #efcf85;--danger: #b3261e;--danger-hover: #8f1e18;--danger-bg: #fbeae8;--danger-line: #f0bcb6;--info: #1d5a86;--info-bg: #e8f0f7;--info-line: #b9d2e6;--viz-1: #5c0a0a;--viz-2: #b71c1c;--viz-3: #d2442f;--viz-4: #f4a261;--viz-5: #fbe29a;--viz-6: #d6ecd2;--plot: #fffef3;--plot-hover: #fff3b0;--plot-sel: #ffd166;--line: #aab985;--road: #efd58b;--road-edge: #dfc478;--junction: #efd58b;--entry: #50936d;--gate: #99b44f;--map-hover: #658e39;--map-selected: #3f752d;--map-merged: #788e56;--map-path: #91a65f;--map-label: #52653b;--map-note: #7e8e5e;--map-halo: #fffdf0;--map-boundary: #728747;--map-swatch-edge: rgb(41 55 46 / .13);--fs-small: 14px;--fs-body: 16px;--fs-body-lg: 18px;--fs-h3: 20px;--fs-h2: 24px;--fs-h1: 28px;--fs-display: 36px;--lh-tight: 1.25;--lh: 1.5;--fw-regular: 400;--fw-medium: 500;--fw-bold: 600;--fw-heavy: 650;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 24px;--r-full: 999px;--shadow-1: 0 1px 2px rgb(31 36 32 / .06);--shadow-2: 0 4px 16px rgb(31 36 32 / .1);--shadow-3: 0 16px 48px rgb(31 36 32 / .18);--control-h: 48px;--control-h-sm: 40px;--control-h-lg: 56px;--control-px: 20px;--focus-ring: 3px solid var(--brand);--dur-fast: .12s;--dur: .2s;--ease: ease-out}.member-page{--fs-small: 16px;--fs-body: 18px;--fs-body-lg: 20px;--fs-h3: 22px;--fs-h2: 26px;--fs-h1: 30px;--control-h: 54px;--control-h-sm: 48px;--control-h-lg: 56px;font-size:var(--fs-body)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body,#root{height:100%;margin:0}body{font:var(--fw-regular) var(--fs-body) / var(--lh) var(--font);color:var(--text);background:var(--bg);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}#root{display:flex;flex-direction:column}:where(h1,h2,h3,h4){font-family:var(--font);line-height:var(--lh-tight);color:var(--text)}:where(h1){font-size:var(--fs-h1);font-weight:var(--fw-heavy)}:where(h2){font-size:var(--fs-h2);font-weight:var(--fw-bold)}:where(h3){font-size:var(--fs-h3);font-weight:var(--fw-bold)}:where(small){font-size:var(--fs-small)}:where(a){color:var(--brand);text-underline-offset:3px}:where(a:hover){color:var(--brand-hover)}button,input,select,textarea{font:inherit;color:inherit}button,summary,a,input,select,textarea{-webkit-tap-highlight-color:transparent}:focus-visible{outline:var(--focus-ring);outline-offset:2px}button{min-height:var(--control-h);padding:0 var(--control-px);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-weight:var(--fw-medium);line-height:1.25;cursor:pointer;transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}button:hover{background:var(--surface-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--control-h);padding:0 var(--control-px);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-weight:var(--fw-bold);font-size:var(--fs-body);text-decoration:none;white-space:nowrap}.btn:hover{background:var(--surface-muted);color:var(--text)}button.primary,.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--text-on-brand);font-weight:var(--fw-bold)}button.primary:hover,.btn-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover)}.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn-ghost{background:transparent;border-color:transparent;color:var(--brand)}.btn-ghost:hover{background:var(--surface-muted);color:var(--brand-hover)}.btn-danger{background:var(--surface);border-color:var(--danger-line);color:var(--danger)}.btn-danger:hover{background:var(--danger-bg);color:var(--danger)}.btn-danger.btn-solid{background:var(--danger);border-color:var(--danger);color:var(--text-on-brand)}.btn-danger.btn-solid:hover{background:var(--danger-hover)}.btn-sm{min-height:var(--control-h-sm);padding:0 var(--sp-4)}.btn-lg{min-height:var(--control-h-lg);padding:0 var(--sp-6);font-size:var(--fs-body-lg)}.btn-block{display:flex;width:100%}.btn-icon{width:var(--control-h);padding:0}.btn[aria-busy=true]{cursor:progress}.btn-spinner{width:18px;height:18px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .8s linear infinite}button:disabled,.btn[aria-disabled=true]{background:var(--surface-muted)!important;color:var(--text-disabled)!important;border:1px dashed var(--border-strong)!important;opacity:1!important;cursor:not-allowed;box-shadow:none!important}button[aria-busy=true]:disabled{cursor:progress}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=hidden]),select,textarea){min-height:var(--control-h);padding:0 var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:max(16px,1em)}:where(textarea){padding:var(--sp-3);line-height:var(--lh)}:where(input,select,textarea):focus-visible{outline:2px solid var(--brand);outline-offset:0;border-color:var(--brand)}:where(input,select,textarea):disabled{background:var(--surface-muted);color:var(--text-muted);border-style:dashed;cursor:not-allowed}:where(input,textarea)::placeholder{color:var(--text-muted);opacity:1}:where(input[type=checkbox],input[type=radio]){width:22px;height:22px;accent-color:var(--brand)}@keyframes spin{to{transform:rotate(360deg)}}.brand-mark{font-family:var(--font-brand);font-size:var(--fs-display);font-weight:400;color:var(--sun);line-height:1}main{display:flex;flex:1;min-height:0;position:relative}aside{order:-1;flex:none;width:360px;padding:var(--sp-6);background:var(--surface);border-right:1px solid var(--border);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.field{margin-bottom:var(--sp-3)}.field label{display:block;color:var(--text-secondary);font-size:var(--fs-small);font-weight:var(--fw-medium);margin-bottom:var(--sp-1)}.field input,.field textarea,.field select{width:100%}.field textarea{min-height:88px;resize:vertical}.row{display:flex;gap:var(--sp-2);margin-top:var(--sp-2);flex-wrap:wrap}.row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.toggle{display:flex;align-items:center;gap:var(--sp-2);min-height:40px;color:var(--text-secondary)}.muted{font-size:var(--fs-small);color:var(--text-muted)}.err{color:var(--danger);margin:var(--sp-3) 0}.modal-bg{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:40;padding:var(--sp-4)}.modal{background:var(--surface);border-radius:var(--r-xl);padding:var(--sp-8);width:min(480px,100%);box-shadow:var(--shadow-3)}.modal h2{font-size:var(--fs-h2);margin:0 0 var(--sp-6)}.center{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.import-dialog{width:min(1180px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid var(--border);border-radius:var(--r-xl);background:var(--surface);color:var(--text);box-shadow:var(--shadow-3)}.import-dialog::backdrop{background:var(--overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.import-head{display:flex;align-items:center;justify-content:space-between;padding:24px 28px 18px;border-bottom:1px solid var(--border)}.import-head h2{margin:4px 0 0;font-size:var(--fs-h1)}.import-head>button{width:var(--control-h);padding:0;font-size:var(--fs-h2);background:transparent;border:none;color:var(--text-secondary)}.import-body{padding:24px 28px}.import-tabs{display:flex;gap:var(--sp-1);padding:var(--sp-2) 28px 0;border-bottom:1px solid var(--border);overflow-x:auto}.import-tabs button{flex:none;margin-bottom:-1px;padding:0 var(--sp-4);border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;color:var(--text-secondary)}.import-tabs button[aria-pressed=true]{color:var(--brand);border-bottom-color:var(--brand);font-weight:var(--fw-bold)}.import-defaults{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:20px}.import-dialog label{font-size:var(--fs-small);font-weight:var(--fw-medium);color:var(--text-secondary)}.import-defaults label{display:grid;gap:6px;flex:1 1 155px}.import-dialog input:not([type=checkbox]),.import-dialog select,.import-dialog textarea{width:100%;min-width:0}.import-dialog input[type=checkbox]{accent-color:var(--brand)}.import-drop{border:1px dashed var(--border-strong);border-radius:var(--r-lg);min-height:140px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;background:var(--surface-muted);cursor:pointer;padding:20px}.import-drop strong{font-size:var(--fs-h3);font-weight:600;color:var(--brand)}.import-drop input{max-width:290px}.import-note{padding:12px 14px;border-radius:var(--r-md);background:var(--warning-bg);font-size:var(--fs-body)}.import-files{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px}.import-files li{background:var(--surface-muted);border-radius:var(--r-md);padding:5px 10px;font-size:var(--fs-body)}.import-files button{border:0;background:none}.paste-label{display:block;margin:22px 0 16px}.paste-label textarea{display:block;min-height:140px;margin-top:8px;resize:vertical}.import-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:16px;font-size:var(--fs-body);flex-wrap:wrap}.import-toolbar>span{margin-right:auto}.import-grid{overflow:auto;max-height:48vh;border:1px solid var(--border);border-radius:var(--r-md)}.import-grid table{width:100%;border-collapse:collapse;font-size:var(--fs-body);min-width:950px}.import-grid th{position:sticky;top:0;z-index:1;background:var(--surface-muted);padding:12px 8px;text-align:left}.import-grid td{vertical-align:top;padding:10px 8px;border-bottom:1px solid var(--border);min-width:100px}.import-grid td:first-child{min-width:30px}.import-grid td:first-child small{display:block}.import-grid td:nth-child(2){width:85px;min-width:70px}.import-grid td:last-child{min-width:190px;max-width:260px}.import-grid pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:150px;overflow:auto}.import-grid td small{display:block;margin:6px 0;color:var(--text-muted)}.import-grid .excluded{opacity:.55}.duplicate-check{display:flex;align-items:center;gap:5px;margin-top:8px}.import-footer{display:flex;align-items:center;gap:12px;margin-top:20px;flex-wrap:wrap}.import-footer>span{margin-right:auto;font-size:var(--fs-body)}.import-effect{background:var(--surface-muted);border-radius:var(--r-md);padding:16px;margin-top:14px;font-size:var(--fs-body)}.bank-summary{text-align:left;margin-bottom:18px}.bank-filter{display:flex;gap:8px;flex-wrap:wrap;padding:0;margin:14px 0}.bank-summary dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 18px;margin:12px 0 0}.bank-summary dt{color:var(--text-secondary);font-size:var(--fs-small)}.bank-summary dd{margin:2px 0 0;font-weight:600}.receipt-match{display:grid;grid-template-columns:1fr 1fr;gap:15px;align-items:center;padding:8px 0}.import-error{margin:0 28px 20px}.import-success{padding:50px 28px;text-align:center}.import-success>strong{font-size:var(--fs-h1)}.unmatched-row{display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--border);padding:18px 0}.unmatched-row>div{flex:1;min-width:180px}.unmatched-row input,.unmatched-row select{max-width:150px}@media(max-width:720px){.import-dialog{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);border-radius:var(--r-lg)}.import-body,.import-head{padding:16px}.import-tabs{padding:12px 16px 0}.import-drop strong{font-size:var(--fs-body-lg)}.receipt-match{grid-template-columns:1fr}.unmatched-row{flex-wrap:wrap}.import-footer>span{width:100%}}.member-page{min-height:100dvh;width:100%;max-width:680px;margin:0 auto;padding:var(--sp-6) var(--sp-4) var(--sp-12);color:var(--text)}.member-brand{display:flex;position:static;align-items:center;gap:12px;border:0;background:none;box-shadow:none;padding:0 0 var(--sp-6);font-family:var(--font-brand);font-size:var(--fs-h3)}.member-brand small{display:block;font-family:var(--font);font-size:var(--fs-small);margin-top:2px;color:var(--text-muted)}.member-page h1{font-size:var(--fs-h1);font-weight:var(--fw-heavy);margin:var(--sp-2) 0 var(--sp-5)}.member-page h2{font-size:var(--fs-h2);margin:0 0 12px}.member-box{background:var(--surface);padding:var(--sp-6);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);margin:0 0 var(--sp-4)}.member-box p{line-height:1.55}.member-page small{color:var(--text-muted)}.member-primary{display:inline-flex;align-items:center;justify-content:center;min-height:var(--control-h);padding:0 var(--sp-6);border:1px solid var(--brand);border-radius:var(--r-md);background:var(--brand);color:var(--text-on-brand);font-weight:var(--fw-bold);text-decoration:none;cursor:pointer}.member-primary:hover{background:var(--brand-hover);color:var(--text-on-brand)}.member-link{display:block;margin-top:20px;color:var(--brand)}.member-welcome,.member-plot-heading,.member-total{display:flex;justify-content:space-between;align-items:center;gap:15px}.member-request button{margin:var(--sp-2) var(--sp-2) 0 0}.member-plot-heading h2{margin:0 0 5px}.member-fees{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.member-fees>div{display:grid;gap:7px;background:var(--surface-muted);padding:14px;border-radius:var(--r-md)}.member-fees strong{font-size:var(--fs-h2);font-weight:var(--fw-heavy)}.member-total{padding:var(--sp-4) 0;font-size:var(--fs-h3)}.member-total strong{font-size:var(--fs-h1);font-weight:var(--fw-heavy)}.member-hint{font-size:var(--fs-body);background:var(--warning-bg);padding:12px;border-radius:var(--r-md)}.member-payment{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--border);font-size:var(--fs-body)}.member-payment strong{white-space:nowrap}.member-form label,.access-item>label{display:grid;gap:var(--sp-2);font-weight:var(--fw-medium);margin:var(--sp-4) 0}.member-form input:not([type=checkbox]){width:100%}.member-consent{display:flex!important;align-items:flex-start;gap:var(--sp-3)!important;font-size:var(--fs-small)!important;font-weight:var(--fw-regular)!important;line-height:1.5}.member-consent input{flex:0 0 auto;width:24px;height:24px;margin-top:0}.access-item{border:1px solid var(--border);padding:20px;border-radius:var(--r-lg);margin-bottom:16px}.access-title{display:flex;justify-content:space-between;align-items:center;gap:15px}.access-title h3{margin:0;font-size:var(--fs-h3)}.access-title>span{padding:6px 10px;border-radius:var(--r-xl);background:var(--surface-muted);font-size:var(--fs-small)}.access-compare{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}.access-compare>div{display:flex;flex-direction:column;gap:7px;background:var(--surface-muted);padding:14px;border-radius:var(--r-md)}.access-compare p{margin:0}.access-compare a{display:block;color:var(--brand)}.access-actions{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:540px){.member-page{padding:var(--sp-4) var(--sp-4) var(--sp-10)}.member-box{padding:var(--sp-5) var(--sp-4)}.access-compare{grid-template-columns:1fr;gap:8px}.access-item{padding:14px}}.member-demo-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);background:var(--info-bg);border:1px solid var(--info-line);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);margin:0 0 var(--sp-5)}.member-demo-banner small{display:block;margin-top:4px;line-height:1.4}.member-demo-banner button{flex-shrink:0}.member-demo-review{border-top:1px solid var(--border);margin-top:16px;padding-top:14px;display:grid;gap:10px}.member-call{border:1px solid var(--border);border-radius:var(--r-xl);padding:30px 24px;max-width:380px;width:calc(100% - 40px);box-sizing:border-box;background:var(--surface);color:var(--text);text-align:center;box-shadow:var(--shadow-3)}.member-call::backdrop{background:var(--overlay);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.member-call h2{margin-bottom:6px}.member-call p{line-height:1.6}.member-call-icon{display:grid;place-items:center;width:76px;height:76px;margin:24px auto 16px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-size:var(--fs-display)}.member-call-actions{display:grid;gap:10px;margin-top:24px}.member-call-actions button{min-height:var(--control-h-lg);font-size:var(--fs-body-lg)}.member-call-dismiss{margin-top:20px;background:transparent;border:0;color:var(--text-muted);padding:10px}@media(max-width:420px){.member-demo-banner{align-items:flex-start;flex-direction:column}}.ui-field{display:grid;gap:var(--sp-2);min-width:0}.ui-field>label{font-size:var(--fs-small);font-weight:var(--fw-medium);color:var(--text-secondary)}.ui-field>:is(input,select,textarea){width:100%}.ui-field-hint{color:var(--text-muted)}.ui-field-error{color:var(--danger);font-weight:var(--fw-medium)}.ui-field-invalid>:is(input,select,textarea){border-color:var(--danger)}.ui-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--shadow-1)}.ui-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}.ui-card-head h2{margin:0;font-size:var(--fs-h3)}.ui-card-danger{border-left:4px solid var(--danger)}.ui-card-warning{border-left:4px solid var(--warning-line)}.ui-card-brand{border-left:4px solid var(--brand)}.ui-tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.ui-tabs::-webkit-scrollbar{display:none}.ui-tab{flex:none;display:inline-flex;align-items:center;gap:var(--sp-2);min-height:var(--control-h);padding:0 var(--sp-4);margin-bottom:-1px;border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;color:var(--text-secondary);font-size:var(--fs-body);font-weight:var(--fw-medium);white-space:nowrap}.ui-tab:hover{background:transparent;color:var(--text);border-bottom-color:var(--border-strong)}.ui-tab[aria-selected=true]{color:var(--brand);border-bottom-color:var(--brand);font-weight:var(--fw-bold)}.ui-tab-count{font-size:var(--fs-small);font-weight:var(--fw-bold);color:var(--text-muted)}.ui-chip{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:2px 12px;border-radius:var(--r-full);font-size:var(--fs-small);font-weight:var(--fw-medium);line-height:1.3;white-space:nowrap;background:var(--surface-muted);color:var(--text-secondary)}.ui-chip-success{background:var(--success-bg);color:var(--success)}.ui-chip-warning{background:var(--warning-bg);color:var(--warning)}.ui-chip-danger{background:var(--danger-bg);color:var(--danger)}.ui-chip-info{background:var(--info-bg);color:var(--info)}.ui-chip-brand{background:var(--brand-soft);color:var(--brand)}.ui-count{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--r-full);background:var(--danger);color:var(--text-on-brand);font-size:var(--fs-small);font-weight:var(--fw-bold);line-height:1}.ui-dialog{width:min(720px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:0;border-radius:var(--r-xl);background:var(--surface);color:var(--text);box-shadow:var(--shadow-3)}.ui-dialog-sm{width:min(480px,calc(100vw - 32px))}.ui-dialog-lg{width:min(1080px,calc(100vw - 32px))}.ui-dialog::backdrop{background:var(--overlay)}.ui-dialog-frame{display:flex;flex-direction:column;max-height:calc(100dvh - 32px)}.ui-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-5) var(--sp-4) var(--sp-3) var(--sp-6)}.ui-dialog-head h2{margin:0;font-size:var(--fs-h2)}.ui-dialog-close{color:var(--text-secondary)}.ui-dialog-body{padding:0 var(--sp-6) var(--sp-6);overflow:auto}.ui-dialog-foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-3);padding:var(--sp-4) var(--sp-6);border-top:1px solid var(--border)}.ui-sheet,.ui-dialog.ui-sheet{margin:auto auto 0;width:min(680px,100vw);max-width:100vw;border-radius:var(--r-xl) var(--r-xl) 0 0}.ui-sheet .ui-dialog-head{position:relative;padding-top:var(--sp-6)}.ui-sheet .ui-dialog-frame{max-height:90dvh}.ui-sheet .ui-dialog-head:before{content:"";position:absolute;top:8px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:var(--border-strong)}@media(max-width:720px){.ui-dialog{margin:auto auto 0;width:100vw;max-width:100vw;border-radius:var(--r-xl) var(--r-xl) 0 0}.ui-dialog-frame{max-height:90dvh}.ui-dialog-head{padding-left:var(--sp-4)}.ui-dialog-body{padding:0 var(--sp-4) var(--sp-4)}.ui-dialog-foot{padding:var(--sp-3) var(--sp-4) calc(var(--sp-3) + env(safe-area-inset-bottom))}.ui-dialog-foot>*{flex:1 1 100%}}.ui-menu{position:relative}.ui-menu-button{gap:var(--sp-2);color:var(--text);font-weight:var(--fw-medium)}.ui-menu-caret{flex:none;color:var(--text-muted)}.ui-menu-list{position:absolute;top:calc(100% + 6px);z-index:30;min-width:260px;padding:var(--sp-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2)}.ui-menu-right{right:0}.ui-menu-left{left:0}.ui-menu-header{padding:var(--sp-2) var(--sp-3) var(--sp-3);margin-bottom:var(--sp-1);border-bottom:1px solid var(--border)}.ui-menu-header strong{display:block}.ui-menu-header small{color:var(--text-muted)}.ui-menu-item{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;width:100%;min-height:var(--control-h);padding:var(--sp-2) var(--sp-3);border:0;border-radius:var(--r-sm);background:transparent;color:var(--text);font-weight:var(--fw-regular);text-align:left;text-decoration:none}.ui-menu-item:hover{background:var(--surface-muted);color:var(--text)}.ui-menu-item small{color:var(--text-muted)}.ui-menu-danger{color:var(--danger)}.ui-empty{display:grid;justify-items:center;gap:var(--sp-3);padding:var(--sp-10) var(--sp-6);text-align:center;color:var(--text-secondary)}.ui-empty-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--surface-muted);color:var(--text-muted)}.ui-empty-title{margin:0;font-size:var(--fs-body-lg);font-weight:var(--fw-bold);color:var(--text)}.ui-empty-text{margin:0;max-width:44ch}.ui-spinner{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--text-muted)}.ui-skeleton{display:grid;gap:var(--sp-3)}.ui-skeleton span{display:block;height:18px;border-radius:var(--r-sm);background:linear-gradient(90deg,var(--surface-muted),var(--surface-sunken),var(--surface-muted));background-size:200% 100%;animation:skeleton 1.4s ease-in-out infinite}@keyframes skeleton{to{background-position:-200% 0}}.ui-alert{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-4);border:1px solid;border-radius:var(--r-md)}.ui-alert strong{display:block;color:var(--text)}.ui-alert-text{color:var(--text-secondary)}.ui-alert-info{background:var(--info-bg);border-color:var(--info-line)}.ui-alert-success{background:var(--success-bg);border-color:var(--success-line)}.ui-alert-warning{background:var(--warning-bg);border-color:var(--warning-line)}.ui-alert-danger{background:var(--danger-bg);border-color:var(--danger-line)}.ui-alert-danger strong{color:var(--danger)}.ui-toast-region{position:fixed;left:50%;bottom:calc(var(--sp-6) + env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;pointer-events:none}.ui-toast{max-width:calc(100vw - 32px);padding:var(--sp-3) var(--sp-5);border-radius:var(--r-md);background:var(--text);color:var(--text-on-brand);box-shadow:var(--shadow-2)}
