:root{--brand-900: #2d040c;--brand-800: #460b19;--brand-700: #641427;--brand-500: #83434f;--brand-100: #f6eaed;--brand-50: #fbf5f6;--accent: #c61538;--bg: #fafafa;--surface: #ffffff;--surface-2: #f4f4f5;--line: #e4e4e7;--line-strong: #d4d4d8;--text: #18181b;--text-2: #52525b;--text-3: #71717a;--ok: #15803d;--ok-bg: #ecfdf3;--warn: #a16207;--warn-bg: #fefce8;--danger: #b42318;--danger-bg: #fef3f2;--info: #1f4e79;--info-bg: #eef4fb;--radius: 8px;--radius-sm: 6px;--shadow: 0 1px 2px rgba(24, 24, 27, .06), 0 1px 3px rgba(24, 24, 27, .04);--shadow-lg: 0 12px 32px rgba(24, 24, 27, .16);--sidebar: 236px;--font: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--brand-700);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;line-height:1.25;color:var(--text)}h1{font-size:22px;font-weight:650;letter-spacing:-.01em}h2{font-size:16px;font-weight:600}h3{font-size:14px;font-weight:600}p{margin:0}:focus-visible{outline:2px solid var(--brand-700);outline-offset:2px;border-radius:4px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.app{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 10px}.brandmark{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}.brandmark img{width:34px;height:34px}.brandmark strong{display:block;font-size:13px;letter-spacing:.14em;color:var(--brand-900)}.brandmark span{display:block;font-size:11px;color:var(--text-3);letter-spacing:.02em}.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);padding:14px 10px 6px}.nav a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text-2);font-weight:500;text-decoration:none;position:relative}.nav a svg{width:17px;height:17px;flex:none}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{background:var(--brand-50);color:var(--brand-700)}.nav a.active:before{content:"";position:absolute;left:-10px;top:7px;bottom:7px;width:3px;background:var(--brand-700);border-radius:0 2px 2px 0}.nav a .soon{margin-left:auto;font-size:10px;color:var(--text-3);border:1px solid var(--line);border-radius:999px;padding:0 6px}.nav a.disabled{color:var(--text-3);cursor:default}.nav a.disabled:hover{background:none}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:12px 8px 0;display:flex;align-items:center;gap:10px}.sidebar-foot .who{min-width:0;flex:1}.sidebar-foot .who strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-foot .who span{font-size:11px;color:var(--text-3)}.org-switch{min-height:24px;padding:1px 4px;font-size:11px;color:var(--text-2);margin-top:2px}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;height:56px;display:flex;align-items:center;gap:12px;padding:0 24px;background:#fafafaeb;backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.searchbtn{flex:1;max-width:460px;display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-3);cursor:text;font:inherit}.searchbtn .ph{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.searchbtn kbd,kbd{margin-left:auto;font-family:var(--mono);font-size:11px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 5px;color:var(--text-3);background:var(--surface)}.topbar .spacer{flex:1}.btn.menubtn{display:none}.content{padding:24px;max-width:1400px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-head .sub{color:var(--text-3);margin-top:4px}.page-head .actions{display:flex;gap:8px;flex-wrap:wrap}.crumbs{font-size:12px;color:var(--text-3);margin-bottom:6px}.crumbs a{color:var(--text-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font:inherit;font-weight:550;cursor:pointer;white-space:nowrap;text-decoration:none!important}.btn:hover{background:var(--surface-2)}.btn svg{width:16px;height:16px}.btn.primary{background:var(--brand-700);border-color:var(--brand-700);color:#fff}.btn.primary:hover{background:var(--brand-800)}.btn.danger{color:var(--danger);border-color:#f4c7c3}.btn.danger:hover{background:var(--danger-bg)}.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{height:28px;padding:0 8px;font-size:13px}.btn.icon{width:34px;padding:0}.btn.sm.icon{width:28px}.btn:disabled{opacity:.55;cursor:not-allowed}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line)}.card-body{padding:16px}.card-body.flush{padding:0}.grid{display:grid;gap:16px}.grid.kpis{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.grid.two{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}@media(max-width:1100px){.grid.three{grid-template-columns:1fr}}.grid.halves{grid-template-columns:1fr 1fr}.kpi{padding:14px 16px;position:relative}.kpi .label{color:var(--text-2);font-size:12px;font-weight:550;display:flex;align-items:center;gap:6px}.kpi .value{font-size:24px;font-weight:650;margin-top:6px;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.kpi .meta{font-size:11px;color:var(--text-3);margin-top:4px}.kpi.danger .value{color:var(--danger)}.info-dot{border:none;background:none;padding:0;color:var(--text-3);cursor:help;display:inline-flex}.info-dot svg{width:14px;height:14px}.badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border-radius:999px;font-size:12px;font-weight:550;background:var(--surface-2);color:var(--text-2);white-space:nowrap}.badge.brand{background:var(--brand-100);color:var(--brand-800)}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.danger{background:var(--danger-bg);color:var(--danger)}.badge.info{background:var(--info-bg);color:var(--info)}.badge svg{width:12px;height:12px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.muted{color:var(--text-3)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:12px}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:12px}.between{justify-content:space-between}.grow{flex:1;min-width:0}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{width:28px;height:28px;border-radius:50%;background:var(--brand-100);color:var(--brand-800);display:inline-grid;place-items:center;font-size:11px;font-weight:650;flex:none}.avatar.sm{width:22px;height:22px;font-size:10px}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;font-weight:600;color:var(--text-3);padding:9px 14px;border-bottom:1px solid var(--line);background:var(--surface);white-space:nowrap}.table td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tbody tr{cursor:pointer}.table tbody tr:hover td{background:var(--brand-50)}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.toolbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.toolbar .search{position:relative;flex:1;min-width:200px;max-width:360px}.toolbar .search svg{position:absolute;left:10px;top:9px;width:16px;height:16px;color:var(--text-3)}.toolbar .search input{padding-left:32px}.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}.seg button{border:none;background:none;font:inherit;padding:0 12px;height:32px;cursor:pointer;color:var(--text-2);display:inline-flex;align-items:center;gap:6px}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--brand-50);color:var(--brand-700);font-weight:600}.seg button svg{width:15px;height:15px}.field{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:550;color:var(--text-2)}.field .hint{font-weight:400;color:var(--text-3);font-size:12px}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:7px 10px;width:100%;min-height:34px}textarea{resize:vertical;min-height:80px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-100)}input[type=checkbox]{width:16px;height:16px;min-height:0;accent-color:var(--brand-700)}.password-input{position:relative}.password-input input{padding-right:38px}.password-toggle{position:absolute;right:3px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:30px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-3);cursor:pointer}.password-toggle:hover{background:var(--surface-2);color:var(--text)}.password-toggle svg{width:16px;height:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}.form-grid .full{grid-column:1 / -1}.form-error{color:var(--danger);background:var(--danger-bg);border:1px solid #f4c7c3;border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;display:flex;gap:8px;align-items:flex-start}.form-error svg{flex:none;margin-top:2px}.detail{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}.props{display:grid;grid-template-columns:130px 1fr;gap:9px 12px;font-size:13px}.props dt{color:var(--text-3)}.props dd{margin:0;min-width:0;overflow-wrap:anywhere}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px}.tabs button{background:none;border:none;font:inherit;padding:8px 12px;color:var(--text-2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:550}.tabs button.on{color:var(--brand-700);border-bottom-color:var(--brand-700)}.tabs button .count{color:var(--text-3);font-weight:400;margin-left:4px}.list{list-style:none;margin:0;padding:0}.list>li{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line)}.list>li:last-child{border-bottom:none}.list>li.click{cursor:pointer}.list>li.click:hover{background:var(--brand-50)}.check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--surface);display:inline-grid;place-items:center;cursor:pointer;flex:none;padding:0;color:transparent}.check:hover{border-color:var(--brand-500);color:var(--brand-500)}.check.done{background:var(--brand-700);border-color:var(--brand-700);color:#fff}.check svg{width:12px;height:12px}.task-title.done{text-decoration:line-through;color:var(--text-3)}.board{display:flex;gap:12px;overflow-x:auto;padding-bottom:12px;align-items:flex-start;min-height:60vh}.col{flex:1 0 250px;max-width:340px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;max-height:calc(100vh - 210px)}.col-head{padding:10px 12px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.col-head h3{font-size:13px}.col-head .sum{margin-left:auto;font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}.col-body{padding:8px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;min-height:80px}.col.over{border-color:var(--brand-500);background:var(--brand-50)}.kcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 11px;cursor:grab;box-shadow:var(--shadow)}.kcard:hover{border-color:var(--line-strong)}.kcard:active{cursor:grabbing}.kcard.dragging{opacity:.4}.kcard .t{font-weight:550;overflow-wrap:anywhere}.kcard .m{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:12px;color:var(--text-3);flex-wrap:wrap}.drop-line{height:3px;background:var(--brand-500);border-radius:2px;margin:-2px 0}.col-add{margin:0 8px 8px}.overlay{position:fixed;inset:0;background:#18181b61;z-index:50;display:grid;place-items:start center;padding:8vh 16px 16px;overflow-y:auto}.modal{background:var(--surface);border-radius:10px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;border:1px solid var(--line)}.modal.wide{max-width:720px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}.modal-body{padding:18px;display:flex;flex-direction:column;gap:14px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 10px 10px}.palette{max-width:620px}.palette input{border:none;box-shadow:none!important;font-size:16px;padding:14px 18px;border-bottom:1px solid var(--line);border-radius:10px 10px 0 0}.palette .results{max-height:50vh;overflow-y:auto;padding:6px}.palette .hit{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer}.palette .hit.on,.palette .hit:hover{background:var(--brand-50)}.palette .hit svg{width:16px;height:16px;color:var(--text-3);flex:none}.toasts{position:fixed;bottom:20px;right:20px;z-index:60;display:flex;flex-direction:column;gap:8px}.toast{background:var(--text);color:#fff;border-radius:var(--radius-sm);padding:10px 14px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:8px;max-width:380px}.toast.error{background:var(--danger)}.toast svg{width:16px;height:16px;flex:none}.empty{text-align:center;padding:40px 20px;color:var(--text-3)}.empty svg{width:32px;height:32px;color:var(--line-strong);margin-bottom:8px}.empty h3{color:var(--text);margin-bottom:4px}.empty .btn{margin-top:12px}.loading{padding:32px;text-align:center;color:var(--text-3)}.notice{background:var(--info-bg);color:var(--info);border:1px solid #d3e3f4;border-radius:var(--radius);padding:12px 14px;display:flex;gap:10px}.notice svg{flex:none;margin-top:2px;width:18px;height:18px}.progress{height:6px;background:var(--surface-2);border-radius:999px;overflow:hidden;border:1px solid var(--line)}.progress>span{display:block;height:100%;background:var(--brand-700)}.stagebar{display:flex;flex-direction:column;gap:10px}.stagebar .r{display:grid;grid-template-columns:130px 1fr 90px;gap:10px;align-items:center;font-size:13px}.stagebar .r .bar{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.stagebar .r .bar span{display:block;height:100%;background:var(--brand-500);border-radius:999px}.stagebar .r .n{text-align:right;color:var(--text-2);font-variant-numeric:tabular-nums}.quickadd{display:flex;gap:8px}.timeline{list-style:none;margin:0;padding:0}.timeline li{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.timeline li:last-child{border-bottom:none}.timeline .ico{width:28px;height:28px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;color:var(--text-2);flex:none}.timeline .ico svg{width:14px;height:14px}.timeline .body{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px}.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-side{background:var(--brand-900);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-side:after{content:"";position:absolute;inset:auto -80px -120px auto;width:420px;height:420px;border:1px solid rgba(255,255,255,.08);transform:rotate(45deg)}.auth-side:before{content:"";position:absolute;inset:auto -10px -60px auto;width:300px;height:300px;border:1px solid rgba(255,255,255,.06);transform:rotate(45deg)}.auth-side .logo{background:#fff;border-radius:12px;width:64px;height:64px;display:grid;place-items:center}.auth-side .logo img{width:48px}.auth-side h2{color:#fff;font-size:28px;font-weight:600;letter-spacing:-.01em;max-width:380px;margin-top:24px}.auth-side p{color:#ffffffb3;max-width:380px;margin-top:10px}.auth-side .foot{font-size:12px;color:#ffffff80;letter-spacing:.12em}.auth-main{display:grid;place-items:center;padding:32px 20px}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:16px}.auth-card.wide{max-width:520px}.auth-card h1{font-size:24px}.qr{display:grid;place-items:center;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.qr svg{display:block;width:220px;height:220px}.code-input{font-family:var(--mono);font-size:22px;letter-spacing:.4em;text-align:center}.steps{margin:0;padding-left:18px;color:var(--text-2);display:flex;flex-direction:column;gap:6px}@media(max-width:1000px){.grid.two,.detail,.grid.halves{grid-template-columns:1fr}}@media(max-width:760px){.app{grid-template-columns:1fr}.sidebar{position:fixed;z-index:40;left:0;top:0;width:260px;transform:translate(-100%);transition:transform .2s;box-shadow:var(--shadow-lg)}.sidebar.open{transform:none}.btn.menubtn{display:inline-flex}.topbar{padding:0 12px}.content{padding:16px 12px 80px}.form-grid,.auth{grid-template-columns:1fr}.auth-side,.searchbtn kbd{display:none}.col{flex:0 0 85vw;max-width:none}.hide-sm{display:none!important}.fab{position:fixed;right:16px;bottom:16px;z-index:30;width:52px;height:52px;border-radius:50%;box-shadow:var(--shadow-lg)}.props{grid-template-columns:110px 1fr}}@media(min-width:761px){.fab{display:none!important}}.scrim{position:fixed;inset:0;background:#0000004d;z-index:35}.quote-line{display:grid;gap:6px;align-items:start;grid-template-columns:auto minmax(180px,1fr) 70px 104px 110px 92px 104px auto}.quote-line .ql-base{padding-top:8px;font-weight:550;white-space:nowrap;text-align:right}.quote-line textarea.ql-desc{min-height:34px}@media(max-width:1100px){.quote-line{grid-template-columns:auto repeat(4,minmax(0,1fr)) auto;grid-template-areas:"mv desc desc desc desc del" ". qty unit price tax ." ". . . . base .";padding-bottom:10px;border-bottom:1px solid var(--line)}.quote-line .ql-mv{grid-area:mv}.quote-line .ql-desc{grid-area:desc}.quote-line .ql-qty{grid-area:qty}.quote-line .ql-unit{grid-area:unit}.quote-line .ql-price{grid-area:price}.quote-line .ql-tax{grid-area:tax}.quote-line .ql-base{grid-area:base;padding-top:0}.quote-line .ql-del{grid-area:del}}@media(max-width:560px){.quote-line{grid-template-columns:repeat(2,minmax(0,1fr)) auto;grid-template-areas:"desc desc del" "qty unit mv" "price tax ." "base base ."}}.logo-preview{max-height:36px;max-width:120px;object-fit:contain;border:1px solid var(--line);border-radius:4px;background:#fff;padding:2px}.contract-line{display:grid;gap:6px;grid-template-columns:minmax(160px,1fr) 120px 64px 104px 92px auto;align-items:center}@media(max-width:760px){.contract-line{grid-template-columns:repeat(2,minmax(0,1fr)) auto;grid-template-areas:"desc desc del" "period qty ." "price tax .";padding-bottom:8px;border-bottom:1px solid var(--line)}.contract-line .cl-desc{grid-area:desc}.contract-line .cl-period{grid-area:period}.contract-line .cl-qty{grid-area:qty}.contract-line .cl-price{grid-area:price}.contract-line .cl-tax{grid-area:tax}.contract-line .cl-del{grid-area:del}}.review{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}.preview{overflow:hidden}.preview iframe{display:block;width:100%;height:72vh;border:0}.preview img{display:block;max-width:100%;margin:0 auto}@media(max-width:1000px){.review{grid-template-columns:1fr}.preview iframe{height:60vh}}.mail-frame{width:100%;height:60vh;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff}.newmenu{position:relative}.newmenu .menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:230px;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.newmenu .menu button{display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border:0;background:none;border-radius:var(--radius-sm);font:inherit;color:var(--text);cursor:pointer;text-align:left}.newmenu .menu button:hover,.newmenu .menu button:focus-visible{background:var(--surface-2)}.newmenu .menu svg{width:16px;height:16px;color:var(--text-2)}.inline-view{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:1px 4px;margin:-1px -4px;border:0;background:none;border-radius:4px;font:inherit;color:inherit;text-align:left;cursor:text}.inline-view>span{overflow-wrap:anywhere}.inline-view svg{width:13px;height:13px;color:var(--text-3);opacity:0;flex:none}.inline-view:hover,.inline-view:focus-visible{background:var(--surface-2)}.inline-view:hover svg,.inline-view:focus-visible svg{opacity:1}.inline-input{min-height:28px;padding:2px 6px}
