:root{--bp-purple: #7F33EB;--bp-blue: #4E6FF4;--bp-ink: #171717;--bp-body: #747C8B;--bp-bg: #F0F6FF;--bp-surface: #FFFFFF;--bp-border: #E4EAF5;--bp-success: #2FBF71;--bp-warning: #F5A623;--bp-error: #E5484D;--t-primary: var(--bp-ink);--t-accent: var(--bp-blue);--t-surface: var(--bp-bg);--t-text: var(--bp-ink);--t-font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--t-panel: var(--bp-surface);--t-border: var(--bp-border);--t-muted: var(--bp-body);--t-accent-tint: color-mix(in srgb, var(--t-accent) 9%, var(--t-panel));--t-primary-tint: color-mix(in srgb, var(--t-primary) 5%, var(--t-panel));--t-heading-font: var(--t-font);--t-heading-weight: 600;--t-heading-weight-sub: 600;--t-heading-case: none;--t-heading-tracking: -.01em;--t-h1: 24px;--t-sidebar-bg: var(--t-primary);--t-sidebar-fg: #fff;--t-sidebar-dim: rgba(255,255,255,.68);--t-sidebar-line: rgba(255,255,255,.12);--t-sidebar-hover: rgba(255,255,255,.07);--t-sidebar-active: rgba(255,255,255,.13);--t-sidebar-edge: transparent;--r: 4px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--mono: ui-monospace, SFMono-Regular, Menlo, monospace;--ctl-h: 36px;--ctl-border: color-mix(in srgb, var(--t-text) 13%, var(--t-border));--ctl-border-hover: color-mix(in srgb, var(--t-text) 26%, var(--t-border));--ring: 0 0 0 3px color-mix(in srgb, var(--t-accent) 20%, transparent);--well: color-mix(in srgb, var(--t-text) 2.5%, var(--t-panel));--ok-fg: color-mix(in srgb, var(--bp-success) 70%, #0b3d22);--ok-bg: color-mix(in srgb, var(--bp-success) 13%, var(--t-panel));--warn-fg: #8A5A00;--warn-bg: color-mix(in srgb, var(--bp-warning) 17%, var(--t-panel));--bad-fg: #C2353A;--bad-bg: color-mix(in srgb, var(--bp-error) 11%, var(--t-panel));--neutral-bg: color-mix(in srgb, var(--t-text) 6%, var(--t-panel))}:root[data-scheme=dark]{color-scheme:dark;--t-primary-tint: color-mix(in srgb, var(--t-text) 6%, var(--t-panel));--t-accent-tint: color-mix(in srgb, var(--t-accent) 14%, var(--t-panel));--ctl-border: color-mix(in srgb, var(--t-text) 16%, var(--t-border));--ctl-border-hover: color-mix(in srgb, var(--t-text) 34%, var(--t-border));--well: color-mix(in srgb, var(--t-text) 3.5%, var(--t-panel));--ok-fg: color-mix(in srgb, var(--bp-success) 72%, white);--ok-bg: color-mix(in srgb, var(--bp-success) 16%, var(--t-panel));--warn-fg: color-mix(in srgb, var(--bp-warning) 78%, white);--warn-bg: color-mix(in srgb, var(--bp-warning) 15%, var(--t-panel));--bad-fg: color-mix(in srgb, var(--bp-error) 62%, white);--bad-bg: color-mix(in srgb, var(--bp-error) 16%, var(--t-panel));--neutral-bg: color-mix(in srgb, var(--t-text) 9%, var(--t-panel))}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--t-font);font-size:14px;line-height:1.5;color:var(--t-text);background:var(--t-surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}a{color:var(--t-accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}h1,h2,h3,h4{margin:0;font-family:var(--t-heading-font);font-weight:var(--t-heading-weight-sub);line-height:1.25;color:var(--t-text);text-transform:var(--t-heading-case);letter-spacing:var(--t-heading-tracking)}h1{font-size:var(--t-h1);font-weight:var(--t-heading-weight);line-height:1.15}h2{font-size:15px}h3{font-size:14px}p{margin:0 0 var(--s-3)}code,.mono{font-family:var(--mono);font-size:12px}pre.mono,pre.code{background:var(--well);border:1px solid var(--t-border);border-radius:var(--r);padding:12px 14px;overflow-x:auto;line-height:1.55;font-size:12px}:not(pre)>code{background:var(--neutral-bg);padding:1px 5px;border-radius:3px;font-size:12px}button,input,select,textarea{font:inherit;color:inherit}::selection{background:color-mix(in srgb,var(--t-accent) 22%,transparent)}:focus-visible{outline:2px solid color-mix(in srgb,var(--t-accent) 55%,transparent);outline-offset:2px}.icon{width:16px;height:16px;flex:none}.app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100%}.sidebar{background:var(--t-sidebar-bg);color:var(--t-sidebar-fg);border-right:1px solid var(--t-sidebar-edge);display:flex;flex-direction:column;padding:var(--s-4) var(--s-3);position:sticky;top:0;height:100vh;overflow:auto;scrollbar-width:thin}.sidebar .brand{padding:2px var(--s-2) var(--s-4);display:flex;align-items:center;gap:10px;font-weight:600;border-bottom:1px solid var(--t-sidebar-line);margin:0 calc(-1 * var(--s-3)) var(--s-3);padding-left:calc(var(--s-3) + var(--s-2));padding-right:var(--s-4);min-width:0}.sidebar .brand span.mark{width:28px;height:28px;flex:none;display:inline-flex;align-items:center;justify-content:center;background:var(--t-accent);color:#fff;font-size:13px;font-weight:700;border-radius:var(--r)}.sidebar .brand img.mark{width:28px;height:28px;flex:none;display:block}.brand.has-logo{flex-direction:column;align-items:flex-start;gap:6px}.brand img.logo{display:block;width:auto;height:46px;max-width:100%;object-fit:contain;object-position:left center}.brand.has-logo .tagline{margin-top:0}.brand-text{display:flex;flex-direction:column;line-height:1;min-width:0}.brand .name{font-family:var(--t-brand-font, inherit);font-weight:var(--t-brand-weight, 600);text-transform:var(--t-brand-case, none);letter-spacing:var(--t-brand-tracking, 0);font-size:var(--t-brand-size, 15px);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand .tagline{display:block;font-size:7.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--t-sidebar-dim);margin-top:5px;font-weight:600;line-height:1.3}.sidebar nav{display:flex;flex-direction:column;gap:1px}.sidebar nav a{display:flex;align-items:center;gap:10px;padding:7px 10px;color:var(--t-sidebar-dim);border-radius:var(--r);font-size:13.5px;font-weight:500;line-height:1.35;transition:background-color .12s,color .12s}.sidebar nav a .icon{opacity:.85}.sidebar nav a:hover{color:var(--t-sidebar-fg);text-decoration:none;background:var(--t-sidebar-hover)}.sidebar nav a.active{color:var(--t-sidebar-fg);background:var(--t-sidebar-active)}.sidebar nav a.active .icon{opacity:1}:root[data-sidebar=light] .sidebar nav a.active .icon{color:var(--t-accent)}.sidebar .section{padding:var(--s-4) 10px 6px;font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--t-sidebar-dim);opacity:.75;font-weight:600}.sidebar .foot{margin:auto calc(-1 * var(--s-3)) 0;padding:var(--s-3) var(--s-3) 0;border-top:1px solid var(--t-sidebar-line);font-size:12.5px;color:var(--t-sidebar-dim);display:flex;flex-direction:column;gap:var(--s-2)}.sidebar .foot .ws-label{font-size:11px;text-transform:uppercase;letter-spacing:.09em;font-weight:600;opacity:.75;padding:0 2px}.sidebar .foot select{width:100%;height:34px;background:var(--t-sidebar-hover);color:var(--t-sidebar-fg);border:1px solid var(--t-sidebar-line);padding:0 30px 0 10px;border-radius:var(--r);-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;font-size:13px;font-weight:500;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.sidebar .foot select option{color:#171717;background:#fff}.sidebar .me{display:flex;align-items:center;gap:10px;padding:var(--s-2) 2px var(--s-1);min-width:0}.avatar{width:30px;height:30px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--t-accent);color:#fff;font-size:12px;font-weight:600;letter-spacing:.02em}.sidebar .me .who{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.25}.sidebar .me .nm{color:var(--t-sidebar-fg);font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar .me .role{font-size:12px}.sidebar .foot button{background:none;border:0;color:var(--t-sidebar-dim);padding:0;cursor:pointer}.sidebar .foot .icon-btn:hover{color:var(--t-sidebar-fg);background:var(--t-sidebar-hover)}.main{min-width:0;padding:28px 40px 56px}.main-inner{max-width:1360px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-6);flex-wrap:wrap}.page-head>div:first-child{min-width:0}.page-head .sub{margin-top:6px;font-size:13.5px}.page-head .actions{display:flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.page-head h1.record{text-transform:none}.crumb{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--t-muted);margin-bottom:8px;font-weight:500}.crumb:hover{color:var(--t-text);text-decoration:none}.sub{color:var(--t-muted);font-size:13px}.row{display:flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4)}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-4)}.split{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,1fr);gap:var(--s-4);align-items:start}.stack>*+*{margin-top:var(--s-4)}.panel{background:var(--t-panel);border:1px solid var(--t-border);border-radius:var(--r);min-width:0}.panel>.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:12px 18px;min-height:52px;border-bottom:1px solid var(--t-border)}.panel>.panel-head h2{font-size:14.5px;min-width:0}.panel>.panel-head .row{gap:6px}.panel>.panel-body{padding:18px}.panel.flush>.panel-body{padding:0}.panel.flush>.panel-body>.empty,.panel.flush>.panel-body>.loading{padding:var(--s-8) var(--s-4)}.panel.flush>.panel-body>.notice{margin:var(--s-3)}table.tbl{width:100%;border-collapse:collapse;font-size:13.5px}.tbl th,.tbl td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--t-border);vertical-align:middle}.tbl th:first-child,.tbl td:first-child{padding-left:18px}.tbl th:last-child,.tbl td:last-child{padding-right:18px}.tbl thead th{font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--t-muted);font-weight:600;white-space:nowrap;background:var(--well);padding-top:9px;padding-bottom:9px}.tbl tbody tr:last-child>td{border-bottom:0}.tbl tfoot td{font-weight:600;background:var(--well)}.tbl tbody tr{transition:background-color .1s}.tbl tbody tr:hover{background:var(--t-primary-tint)}.tbl tr.click{cursor:pointer}.tbl a:not(.btn),.timeline a:not(.btn),.kanban .card a:not(.btn){color:var(--t-text);font-weight:500}.tbl a:not(.btn):hover,.timeline a:not(.btn):hover,.kanban .card a:not(.btn):hover{color:var(--t-accent);text-decoration:none}.tbl td.n,.tbl th.n{text-align:right;font-variant-numeric:tabular-nums}.tbl td.muted{color:var(--t-muted)}.tbl td .sub{font-size:12.5px}.nowrap,.sub.nowrap{white-space:nowrap;flex-wrap:nowrap}.panel-body:has(>table.tbl){overflow-x:auto;-webkit-overflow-scrolling:touch}.tbl .input,.tbl .select{height:32px}.tw{overflow-x:auto}.kv{display:grid;grid-template-columns:minmax(96px,max-content) minmax(0,1fr);gap:10px var(--s-6);font-size:13.5px;margin:0}.kv dt{color:var(--t-muted)}.kv dd{margin:0;overflow-wrap:anywhere}.stat{padding:16px 18px;border:1px solid var(--t-border);background:var(--t-panel);border-radius:var(--r);min-width:0}.stat .label{font-size:12.5px;color:var(--t-muted);font-weight:500}.stat .value{font-family:var(--t-heading-font);font-size:26px;font-weight:var(--t-heading-weight-sub);letter-spacing:-.015em;margin-top:6px;line-height:1.1;font-variant-numeric:tabular-nums;min-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat .hint{font-size:12.5px;color:var(--t-muted);margin-top:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:var(--ctl-h);padding:0 14px;border:1px solid var(--t-primary);background:var(--t-primary);color:#fff;border-radius:var(--r);cursor:pointer;font-size:13.5px;font-weight:500;line-height:1;white-space:nowrap;transition:background-color .12s,border-color .12s,color .12s;text-decoration:none}.btn:hover{background:color-mix(in srgb,var(--t-primary) 84%,white);border-color:color-mix(in srgb,var(--t-primary) 84%,white);text-decoration:none}.btn:active{transform:translateY(.5px)}:root[data-buttons=invert] .btn:hover{background:transparent;color:var(--t-primary);border-color:var(--t-primary)}:root[data-buttons=invert] .btn.accent:hover{color:var(--t-accent);border-color:var(--t-accent)}:root[data-buttons=invert] .btn.danger:hover{color:var(--bp-error);border-color:var(--bp-error)}:root[data-buttons=invert] .btn.secondary:hover{background:var(--t-primary-tint);color:var(--t-text);border-color:var(--ctl-border-hover)}:root[data-buttons=invert] .btn.ghost:hover{background:var(--t-primary-tint);color:var(--t-text);border-color:transparent}.btn:disabled,.btn:disabled:hover{opacity:.45;cursor:not-allowed;transform:none}.btn.secondary{background:var(--t-panel);color:var(--t-text);border-color:var(--ctl-border)}.btn.secondary:hover{background:var(--t-primary-tint);border-color:var(--ctl-border-hover)}.btn.secondary:disabled:hover{background:var(--t-panel);border-color:var(--ctl-border)}.btn.accent{background:var(--t-accent);border-color:var(--t-accent)}.btn.accent:hover{background:color-mix(in srgb,var(--t-accent) 86%,black);border-color:color-mix(in srgb,var(--t-accent) 86%,black)}.btn.danger{background:var(--bp-error);border-color:var(--bp-error)}.btn.danger:hover{background:color-mix(in srgb,var(--bp-error) 86%,black);border-color:color-mix(in srgb,var(--bp-error) 86%,black)}.btn.ghost{background:transparent;border-color:transparent;color:var(--t-accent);padding:0 8px;height:32px}.btn.ghost:hover{background:var(--t-primary-tint);border-color:transparent;color:var(--t-accent)}.btn.sm{height:30px;padding:0 10px;font-size:12.5px;gap:5px}.btn.ghost.sm{height:28px;padding:0 6px}.btn.icon-only{width:var(--ctl-h);padding:0}.btn.sm.icon-only{width:30px}.btn.ghost.icon-only{width:32px;color:var(--t-muted)}.btn.ghost.sm.icon-only{width:28px}.btn.ghost.icon-only:hover{color:var(--t-text)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:none;border:0;background:transparent;color:var(--t-muted);border-radius:var(--r);cursor:pointer;transition:background-color .12s,color .12s}.icon-btn:hover{background:var(--t-primary-tint);color:var(--t-text)}.input,.select,.textarea{width:100%;height:var(--ctl-h);padding:0 11px;border:1px solid var(--ctl-border);border-radius:var(--r);background:var(--t-panel);color:var(--t-text);font-size:14px;transition:border-color .12s,box-shadow .12s}.input::placeholder,.textarea::placeholder{color:color-mix(in srgb,var(--t-muted) 75%,transparent)}.input:hover,.select:hover,.textarea:hover{border-color:var(--ctl-border-hover)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--t-accent);box-shadow:var(--ring)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--well);color:var(--t-muted);cursor:not-allowed}.select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:32px;cursor:pointer;text-overflow:ellipsis;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23747C8B' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}.select[multiple]{height:auto;padding:6px;background-image:none}.textarea{height:auto;min-height:76px;padding:9px 11px;line-height:1.5;resize:vertical;display:block}input[type=date].input,input[type=time].input,input[type=datetime-local].input{padding-right:8px}input[type=file]{font-size:13px;color:var(--t-muted);max-width:100%}input[type=file].input{height:auto;padding:6px}input[type=file]::file-selector-button{font:inherit;font-size:13px;font-weight:500;height:30px;padding:0 12px;margin-right:10px;border:1px solid var(--ctl-border);border-radius:var(--r);background:var(--t-panel);color:var(--t-text);cursor:pointer}input[type=file]::file-selector-button:hover{background:var(--t-primary-tint)}input[type=color]{width:40px;height:var(--ctl-h);padding:3px;border:1px solid var(--ctl-border);border-radius:var(--r);background:var(--t-panel);cursor:pointer;flex:none}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--r) * .6)}input[type=color]::-moz-color-swatch{border:0}input[type=checkbox],input[type=radio]{accent-color:var(--t-accent);width:16px;height:16px;margin:0;flex:none;cursor:pointer}label.row{cursor:pointer;font-size:13.5px;gap:8px}.input-unit{position:relative;display:inline-flex;width:128px;flex:none}.input-unit .input{padding-right:40px}.input-unit>span{position:absolute;right:11px;top:50%;transform:translateY(-50%);color:var(--t-muted);font-size:13px;pointer-events:none}.field{display:block;margin-bottom:var(--s-4);min-width:0}.field>span:first-child{display:block;font-size:13px;font-weight:500;color:var(--t-text);margin-bottom:6px;line-height:1.3}.field .hint{font-size:12.5px;color:var(--t-muted);margin-top:6px;line-height:1.4}.field .err{color:var(--bad-fg);font-size:12.5px;margin-top:6px}.field:has(.err) .input,.field:has(.err) .select,.field:has(.err) .textarea{border-color:var(--bp-error)}.suggest-wrap{position:relative}.after-field{margin:calc(-1 * var(--s-2)) 0 var(--s-4) -6px}.picked{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--ctl-border);border-radius:var(--r);background:var(--well)}.picked .who{display:flex;flex-direction:column;flex:1;min-width:0;line-height:1.35}.picked strong{font-weight:600;font-size:14px}.avatar.sm{width:30px;height:30px;font-size:11px}.subform{background:var(--well);border:1px solid var(--t-border);border-radius:var(--r);padding:16px;margin-bottom:var(--s-4)}.subform>h3{font-family:var(--t-font);text-transform:none;letter-spacing:0;font-size:13.5px;font-weight:600;margin-bottom:14px}.subform .grid-2:has(>.field),.subform .grid-3:has(>.field){margin-bottom:var(--s-4)}.suggest{margin-top:4px;border:1px solid var(--ctl-border);border-radius:var(--r);background:var(--t-panel);max-height:224px;overflow-y:auto}.suggest button{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-3);width:100%;padding:9px 12px;border:0;background:none;text-align:left;cursor:pointer;font-size:13.5px}.suggest button+button{border-top:1px solid var(--t-border)}.suggest button:hover,.suggest button:focus-visible{background:var(--t-primary-tint);outline:none}.suggest .none{padding:9px 12px}.grid-2>.span-2,.grid-3>.span-2{grid-column:1 / -1}label.check-row{align-items:flex-start;gap:10px;margin-bottom:var(--s-4);font-size:13.5px}label.check-row>input{margin-top:2px}label.check-row strong{font-weight:500}*+.form-section{margin-top:var(--s-1);padding-top:18px;border-top:1px solid var(--t-border)}.form-section>header{margin-bottom:12px}.form-section>header h3{font-family:var(--t-font);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--t-muted)}.form-section>header .sub{margin:4px 0 0;font-size:12.5px}.modal-body>.grid-2:last-child>.field,.modal-body>.grid-3:last-child>.field,.form-section>.grid-2:last-child>.field,.form-section>.grid-3:last-child>.field,.panel-body>.grid-2:last-child>.field,.panel-body>.grid-3:last-child>.field{margin-bottom:0}.grid-2>.field,.grid-3>.field,.grid-4>.field{margin-bottom:0}.grid-2:has(>.field),.grid-3:has(>.field),.grid-4:has(>.field){row-gap:var(--s-4);margin-bottom:var(--s-4)}.form-section>:last-child,.modal-body>:last-child,.panel-body>:last-child{margin-bottom:0}.badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;font-size:12px;font-weight:500;line-height:1;border-radius:var(--r);background:var(--neutral-bg);color:color-mix(in srgb,var(--t-text) 72%,var(--t-muted));white-space:nowrap;border:0;vertical-align:middle}.badge.ok{color:var(--ok-fg);background:var(--ok-bg)}.badge.warn{color:var(--warn-fg);background:var(--warn-bg)}.badge.bad{color:var(--bad-fg);background:var(--bad-bg)}.badge.accent{color:var(--t-accent);background:var(--t-accent-tint)}.badge.dot:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:6px}.tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;font-size:11.5px;font-weight:500;border-radius:var(--r);color:#fff;vertical-align:middle;white-space:nowrap}.notice{padding:12px 14px;border:1px solid color-mix(in srgb,var(--t-accent) 22%,var(--t-panel));background:color-mix(in srgb,var(--t-accent) 5%,var(--t-panel));border-radius:var(--r);font-size:13.5px;line-height:1.5;color:var(--t-text)}.notice.warn{border-color:color-mix(in srgb,var(--bp-warning) 40%,var(--t-panel));background:color-mix(in srgb,var(--bp-warning) 9%,var(--t-panel))}.notice.bad{border-color:color-mix(in srgb,var(--bp-error) 30%,var(--t-panel));background:color-mix(in srgb,var(--bp-error) 6%,var(--t-panel))}.notice.ok{border-color:color-mix(in srgb,var(--bp-success) 32%,var(--t-panel));background:color-mix(in srgb,var(--bp-success) 7%,var(--t-panel))}.notice .btn{vertical-align:middle}.empty{padding:var(--s-8) var(--s-4);text-align:center;color:var(--t-muted);font-size:13.5px}.loading{display:inline-flex;align-items:center;gap:8px;color:var(--t-muted);font-size:13px}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid color-mix(in srgb,var(--t-muted) 30%,transparent);border-top-color:var(--t-accent);animation:spin .7s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--t-border);margin-bottom:var(--s-5);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:10px 12px;cursor:pointer;color:var(--t-muted);margin-bottom:-1px;font-size:13.5px;font-weight:500;white-space:nowrap;transition:color .12s,border-color .12s}.tabs button:hover{color:var(--t-text)}.tabs button.active{color:var(--t-text);border-bottom-color:var(--t-accent)}.toolbar{display:flex;gap:var(--s-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--s-4)}.toolbar .input,.toolbar .select{width:auto;min-width:180px}.row:has(>.input,>.select)>.btn,.toolbar:has(>.input,>.select)>.btn{height:var(--ctl-h)}.tbl .row:has(>.input,>.select)>.btn{height:32px}.toolbar>.input:first-child,.toolbar .input[type=search],.toolbar .input.search{min-width:280px}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f12187a;display:flex;align-items:flex-start;justify-content:center;padding:6vh var(--s-4) var(--s-4);z-index:50;overflow-y:auto;animation:fade-in .14s ease-out}.modal{background:var(--t-panel);border:1px solid var(--t-border);border-radius:var(--r);width:min(580px,100%);max-height:88vh;display:flex;flex-direction:column;box-shadow:0 24px 64px -16px #0f121859,0 2px 6px #0f12180f;animation:modal-in .16s ease-out}.modal.wide{width:min(880px,100%)}.modal.narrow{width:min(440px,100%)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4);padding:18px 16px 16px 22px;border-bottom:1px solid var(--t-border);flex:none}.modal-head h2{text-transform:none;font-size:17px;font-weight:var(--t-heading-weight-sub);line-height:1.3;padding-top:4px}.modal-head .sub{margin-top:4px;font-size:13px}.modal-body{padding:22px;overflow-y:auto;flex:1 1 auto;min-height:0}.modal-foot{display:flex;justify-content:flex-end;align-items:center;gap:var(--s-2);padding:14px 22px;border-top:1px solid var(--t-border);background:var(--well);flex:none;border-radius:0 0 var(--r) var(--r)}.modal-foot .btn{min-width:88px}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.99)}}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}@media(prefers-reduced-motion:reduce){.modal-bg,.modal,.toast,.spinner{animation:none}}:root[data-scheme=dark] .modal-bg{background:#000000b3}:root[data-scheme=dark] .modal{box-shadow:0 24px 64px -16px #000c}:root[data-scheme=dark] .toast{background:color-mix(in srgb,var(--t-text) 10%,var(--t-panel));color:var(--t-text);border:1px solid var(--ctl-border);box-shadow:0 12px 32px -8px #000000b3}:root[data-scheme=dark] .toast.bad{background:color-mix(in srgb,var(--bp-error) 28%,var(--t-panel));border-color:color-mix(in srgb,var(--bp-error) 45%,var(--t-panel))}body.modal-open{overflow:hidden}.toast{position:fixed;bottom:var(--s-6);right:var(--s-6);display:flex;align-items:center;gap:10px;background:var(--bp-ink);color:#fff;padding:12px 16px;border-radius:var(--r);font-size:13.5px;font-weight:500;z-index:60;max-width:420px;box-shadow:0 12px 32px -8px #0f121859;animation:toast-in .18s ease-out}.toast .icon{color:var(--bp-success)}.toast.bad{background:var(--bad-fg)}.toast.bad .icon{color:#fff}.kanban{display:flex;gap:var(--s-3);overflow-x:auto;padding-bottom:var(--s-2);align-items:flex-start}.kanban .col{flex:0 0 272px;background:color-mix(in srgb,var(--t-text) 3.5%,var(--t-surface));border:1px solid var(--t-border);border-radius:var(--r);display:flex;flex-direction:column;max-height:calc(100vh - 180px)}.kanban .col-head{padding:10px 12px;font-weight:600;font-size:13px;display:flex;justify-content:space-between;align-items:center;gap:var(--s-2);border-bottom:1px solid var(--t-border)}.kanban .col-head .badge{height:20px;font-size:11px;padding:0 6px}.kanban .col-head .count{color:var(--t-muted);font-weight:500;font-size:12px;background:var(--t-panel);border:1px solid var(--t-border);border-radius:var(--r);padding:1px 7px;font-variant-numeric:tabular-nums}.kanban .col-body{padding:var(--s-2);overflow:auto;min-height:64px;flex:1;display:flex;flex-direction:column;gap:var(--s-2)}.kanban .card{background:var(--t-panel);border:1px solid var(--t-border);border-radius:var(--r);padding:10px 12px;cursor:grab;font-size:13.5px;transition:border-color .12s}.kanban .card:hover{border-color:var(--ctl-border-hover)}.kanban .card:active{cursor:grabbing}.kanban .card a{font-weight:500}.kanban .card .meta{color:var(--t-muted);font-size:12.5px;margin-top:4px;display:flex;gap:var(--s-2);flex-wrap:wrap;align-items:center}.kanban .col.over{outline:2px solid var(--t-accent);outline-offset:-1px}.inbox{display:grid;grid-template-columns:340px minmax(0,1fr);gap:var(--s-4);height:calc(100vh - 150px);min-height:480px}.inbox .list{overflow:auto}.inbox .thread{display:flex;flex-direction:column;min-height:0}.inbox .messages{flex:1;overflow:auto;padding:var(--s-5);display:flex;flex-direction:column;gap:var(--s-3);background:var(--well)}.msg{max-width:72%;padding:10px 14px;border-radius:var(--r);border:1px solid var(--t-border);background:var(--t-panel);white-space:pre-wrap;font-size:13.5px;line-height:1.5}.msg.out{align-self:flex-end;background:var(--t-accent-tint);border-color:color-mix(in srgb,var(--t-accent) 22%,var(--t-panel))}.msg .m{font-size:11.5px;color:var(--t-muted);margin-top:6px}.cv-item{display:block;padding:12px 16px;border-bottom:1px solid var(--t-border);color:inherit;transition:background-color .1s}.cv-item:hover{background:var(--t-primary-tint);text-decoration:none}.cv-item.active{background:var(--t-accent-tint);box-shadow:inset 2px 0 0 var(--t-accent)}.cv-item .who{display:flex;justify-content:space-between;gap:var(--s-2);font-weight:500;font-size:13.5px}.cv-item .prev{color:var(--t-muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.cv-item.unread .who{font-weight:700}.composer{border-top:1px solid var(--t-border);padding:var(--s-3) var(--s-4)}.composer textarea{min-height:72px}.login{min-height:100%;display:grid;place-items:center;background:var(--t-surface);padding:var(--s-6) var(--s-4)}.login>div{width:min(400px,100%)}.login .brand{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:var(--s-6);color:var(--t-text)}.login .brand img.mark{width:36px;height:36px}.login .brand.has-logo{align-items:center}.login .brand img.logo{height:64px;object-position:center}.login .brand span.mark{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:var(--t-accent);color:#fff;font-weight:700;border-radius:var(--r)}.login .brand .name{font-family:var(--t-brand-font, inherit);font-weight:var(--t-brand-weight, 600);text-transform:var(--t-brand-case, none);letter-spacing:var(--t-brand-tracking, 0);font-size:var(--t-brand-size, 18px);line-height:1}.login .brand .tagline{display:block;font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--t-muted);margin-top:5px;font-weight:600}.login .brand-text{display:flex;flex-direction:column}.login .product{text-align:center;font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--t-muted);margin:calc(-1 * var(--s-4)) 0 var(--s-5)}.login .product.lead{font-size:20px;letter-spacing:0;text-transform:none;color:var(--t-text);margin:0 0 var(--s-5)}.login .credit{text-align:center;font-size:12.5px;color:var(--t-muted);margin:var(--s-4) 0 0}.login .credit a{color:inherit}.sidebar .foot .credit{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;opacity:.55;color:inherit;text-decoration:none;padding:2px;align-self:flex-start}.sidebar .foot .credit:hover{opacity:1}.login .panel{width:100%}.login .panel>.panel-head{padding:22px 26px 0;border-bottom:0;min-height:0}.login .panel>.panel-head h2{font-size:20px}.login .panel>.panel-body{padding:18px 26px 26px}.login .btn[type=submit]{width:100%;height:40px;margin-top:var(--s-2)}.login .foot-note{text-align:center;margin-top:var(--s-4)}.timeline{list-style:none;margin:0;padding:0}.timeline li{padding:10px 0;border-bottom:1px solid var(--t-border);font-size:13.5px;display:grid;grid-template-columns:128px minmax(0,1fr);gap:var(--s-3);align-items:baseline}.timeline li:first-child{padding-top:0}.timeline li:last-child{border-bottom:0;padding-bottom:0}.timeline li .t{color:var(--t-muted);font-size:12.5px;font-variant-numeric:tabular-nums}.fs-week .col{flex:1 1 0;min-width:132px}.fs-week .col.today{border-color:color-mix(in srgb,var(--t-accent) 45%,var(--t-border))}.fs-week .col.today .col-head{color:var(--t-accent)}.fs-week .card{cursor:default}.fs-week .card.completed{opacity:.6}.fs-week .card.cancelled,.fs-week .card.skipped{opacity:.45;text-decoration:line-through}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s-3)}.thumb{margin:0;min-width:0}.thumb img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;border:1px solid var(--t-border);border-radius:var(--r);background:var(--well)}.thumb .doc{display:flex;align-items:center;justify-content:center;aspect-ratio:4 / 3;border:1px solid var(--t-border);border-radius:var(--r);background:var(--well);padding:var(--s-2);font-size:12.5px;text-align:center;word-break:break-word}.thumb figcaption{display:flex;justify-content:space-between;align-items:center;gap:var(--s-1);margin-top:6px;min-width:0}.thumb figcaption .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{position:relative;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:1px solid var(--ctl-border);background:var(--t-panel);color:inherit;font:inherit;font-size:13px;font-weight:500;cursor:pointer;border-radius:var(--r);transition:background-color .12s,border-color .12s}.chip:hover{border-color:var(--ctl-border-hover)}.chip input{position:absolute;opacity:0;width:0;height:0}.chip:has(input:focus-visible){box-shadow:var(--ring)}.chip.on{background:var(--t-primary);color:#fff;border-color:var(--t-primary)}@media(max-width:900px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}.main{overflow-x:hidden;padding:var(--s-5) var(--s-4) var(--s-8)}.main>*,.main-inner>*,.page-head>div{max-width:100%;min-width:0}.sub,.page-head .sub{white-space:normal}table.tbl{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.panel-body>table.tbl{display:table}.tbl th,.tbl td{white-space:nowrap}.tbl td:first-child,.tbl th:first-child{padding-left:14px}.tbl td:last-child,.tbl th:last-child{padding-right:14px}.page-head{margin-bottom:var(--s-5);align-items:flex-start}.sidebar{position:sticky;top:0;z-index:5;height:auto;padding:0;overflow:visible;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand foot" "nav nav";align-items:center}.sidebar .brand{grid-area:brand;padding:var(--s-3) var(--s-4);margin:0;border-bottom:0}.sidebar .brand img.logo{height:34px}.sidebar .foot{grid-area:foot}.sidebar nav{grid-area:nav;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:2px;padding:6px var(--s-3);border-top:1px solid var(--t-sidebar-line);border-bottom:1px solid var(--t-sidebar-line);scrollbar-width:none}.sidebar nav::-webkit-scrollbar{display:none}.sidebar nav>div{display:contents}.sidebar nav .section{display:none}.sidebar nav a{flex:0 0 auto;padding:7px 10px;font-size:13px;white-space:nowrap}.sidebar .foot{margin:0;flex-direction:row;align-items:center;gap:var(--s-2);padding:0 var(--s-3) 0 0;border-top:0;min-width:0}.sidebar .foot .ws-label{display:none}.sidebar .foot select{width:auto;max-width:150px;min-width:0;height:32px}.sidebar .me{padding:0;flex:none}.sidebar .me .who{display:none}.avatar{width:28px;height:28px;font-size:11px}.grid-2,.grid-3,.grid-4,.split,.inbox{grid-template-columns:minmax(0,1fr)}.inbox{height:auto}.toolbar .input,.toolbar .select,.toolbar .input[type=search]{min-width:0;flex:1 1 160px}.kv{grid-template-columns:minmax(88px,max-content) minmax(0,1fr);column-gap:var(--s-4)}}@media(max-width:600px){.modal-bg{padding:0;align-items:flex-end}.modal,.modal.wide,.modal.narrow{width:100%;max-height:92vh;border-radius:var(--r) var(--r) 0 0;border-left:0;border-right:0;border-bottom:0}.modal-foot{border-radius:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom))}.modal-foot .btn{flex:1}.modal-head{padding:16px 12px 14px 16px}.modal-body{padding:18px 16px}.stat{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label value" "hint value";align-items:center;column-gap:var(--s-3);padding:12px 14px}.stat .label{grid-area:label}.stat .value{grid-area:value;font-size:22px;margin:0;min-height:0}.stat .hint{grid-area:hint;margin-top:2px}.grid-2:has(>.stat),.grid-3:has(>.stat),.grid-4:has(>.stat){gap:var(--s-2)}.toast{left:var(--s-4);right:var(--s-4);bottom:var(--s-4);max-width:none}.timeline li{grid-template-columns:1fr;gap:2px}.grid-3.addr{grid-template-columns:minmax(0,1fr) 72px 96px;column-gap:var(--s-2)}:not(td)>.badge{white-space:normal;height:auto;min-height:22px;padding-top:3px;padding-bottom:3px;line-height:1.3;max-width:100%}}.boostpad-notes>td{background:var(--well);padding-top:8px;padding-bottom:8px}.boostpad-notes .timeline li{font-size:13px;padding:6px 0}.boostpad-more{margin-top:var(--s-4)}.boostpad-board .card.ro{cursor:default}.boostpad-board .card .sub{margin-top:4px}.boostpad-notes .boostpad-reply{display:grid;gap:var(--s-2);margin-top:8px;max-width:560px}.boostpad-notes .timeline+.btn,.boostpad-notes .timeline+.boostpad-reply{margin-top:8px}.boostpad-actions{justify-content:flex-end;flex-wrap:nowrap}
