:root{--bg:#1a1b1e;--fg:#fff;--code-bg:color-mix(in srgb, var(--fg) 16%, transparent)}@media (prefers-color-scheme:light){:root{--bg:#f4f4f6;--fg:#1a1b1e;--code-bg:color-mix(in srgb, var(--fg) 9%, transparent)}}[data-theme=dark]{--bg:#1a1b1e;--fg:#fff;--code-bg:color-mix(in srgb, var(--fg) 16%, transparent)}[data-theme=light]{--bg:#f4f4f6;--fg:#1a1b1e;--code-bg:color-mix(in srgb, var(--fg) 9%, transparent)}:root{--nav-height:56px;--accent:#f87171;--info:#60a5fa;--success:#4ade80;--font-mono:"Fira Code", "Courier New", monospace;--border-faint:color-mix(in srgb, var(--fg) 8%, transparent);--border:color-mix(in srgb, var(--fg) 15%, transparent);--border-strong:color-mix(in srgb, var(--fg) 25%, transparent);--border-emphasis:color-mix(in srgb, var(--fg) 40%, transparent);--surface-faint:color-mix(in srgb, var(--fg) 4%, transparent);--surface:color-mix(in srgb, var(--fg) 10%, transparent);--accent-surface:color-mix(in srgb, var(--accent) 6%, transparent);--info-surface:color-mix(in srgb, var(--info) 6%, transparent);--success-surface:color-mix(in srgb, var(--success) 6%, transparent);--overlay-bg:color-mix(in srgb, var(--bg) 55%, transparent);--opacity-faint:.35;--opacity-dim:.4;--opacity-subtle:.5;--opacity-muted:.6;--opacity-secondary:.7;--opacity-strong:.8;--transition-fast:.15s ease-in-out;--transition:.2s ease-in-out;--fs-xs:.75rem;--fs-code:.8rem;--fs-sm:.875rem;--fs-base:1rem;--fs-lg:1.1rem;--fs-xl:1.5rem;--fs-2xl:2.25rem;--fw-light:300;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--br-sm:3px;--br:4px;--br-md:6px;--br-lg:8px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:focus-visible{outline:1px solid var(--fg);box-shadow:none;border-radius:var(--br-sm);opacity:1}code{background:var(--code-bg);border-radius:var(--br-sm);padding:.15em .4em;font-family:monospace;font-size:.875em}html{scrollbar-width:thin;scrollbar-color:var(--border) transparent}html::-webkit-scrollbar{width:8px}html::-webkit-scrollbar-track{background:0 0}html::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--br-sm)}html::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}body{background:var(--bg);color:var(--fg);min-height:100vh;transition:background var(--transition), color var(--transition);font-family:Plus Jakarta Sans,system-ui,sans-serif}main{flex-direction:column;max-width:860px;min-height:100vh;margin:0 auto;padding:4rem 3rem;display:flex}@media (width<=768px){main{padding:1.25rem 1.5rem}}.btn,.btn-primary,.btn-ghost,.btn-outline,.btn-danger{font-size:var(--fs-sm);font-weight:var(--fw-medium);border-radius:var(--br);cursor:pointer;transition:opacity var(--transition-fast);border:none;justify-content:center;align-items:center;padding:.5rem 1.25rem;text-decoration:none;display:inline-flex}.btn-primary{background:var(--fg);color:var(--bg);font-weight:var(--fw-semibold)}.btn-primary:hover{opacity:.85}.btn-primary:disabled{opacity:.4;cursor:default}.btn-ghost{color:inherit;opacity:var(--opacity-faint);background:0 0}.btn-ghost:hover{opacity:var(--opacity-secondary)}.btn-outline{border:1px solid var(--border-strong);color:var(--fg);opacity:var(--opacity-muted);background:0 0}.btn-outline:hover:not(:disabled){opacity:1}.btn-outline:disabled{opacity:.25;cursor:default}.btn-danger{background:var(--accent);color:var(--bg);font-weight:var(--fw-semibold)}.btn-danger:hover{opacity:.85}.btn-danger:disabled{opacity:.4;cursor:default}.btn-icon{color:inherit;cursor:pointer;opacity:var(--opacity-faint);transition:opacity var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;line-height:1;display:flex}.btn-icon:hover{opacity:1}@media (width<=768px){.btn,.btn-primary,.btn-ghost,.btn-outline,.btn-danger{min-height:2.75rem}.btn-icon{padding:.75rem}}.page-header{border-bottom:1px solid var(--border-faint);align-items:center;gap:.5rem;padding-bottom:1rem;display:flex}.page-title{min-width:0;font-size:var(--fs-xl);font-weight:var(--fw-semibold);flex:1;line-height:1.2}.input{background:var(--surface-faint);border:1px solid var(--border);border-radius:var(--br);width:100%;color:var(--fg);font-size:var(--fs-sm);transition:border-color var(--transition-fast);padding:.5rem .75rem;font-family:inherit}.input:focus{border-color:var(--border-emphasis);outline:none}.input::placeholder{opacity:var(--opacity-subtle)}.input[type=number]{-moz-appearance:textfield}.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.input[type=date][value=""]{color:color-mix(in srgb, var(--fg) calc(var(--opacity-subtle) * 100%), transparent)}@media (width<=768px){.input{font-size:1rem}}.select{border-radius:var(--br-md)}.select-chevron{opacity:var(--opacity-muted);pointer-events:none;transition:transform var(--transition-fast);flex-shrink:0;font-size:.65em}.select-wrap{position:relative}.select-wrap select{appearance:none;padding-right:2.25rem}.select-wrap .select-chevron{position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.dropdown{background:var(--bg);border:1px solid var(--border-faint);border-radius:var(--br-md);z-index:100}.eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.08em;text-transform:uppercase;opacity:var(--opacity-faint);margin-bottom:.75rem;display:block}.code-block{font-family:var(--font-mono);font-size:var(--fs-code);background:var(--surface-faint);border:1px solid var(--border-faint);border-radius:var(--br-md);white-space:pre;padding:1rem 1.25rem;line-height:1.6;overflow-x:auto}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(-10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes toast-out{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%)}}.toast{top:calc(var(--nav-height) + 12px);z-index:1000;background:var(--surface);border:1px solid color-mix(in srgb, var(--success) calc(var(--opacity-subtle) * 100%), transparent);border-radius:var(--br-lg);font-size:var(--fs-sm);width:fit-content;max-width:min(360px,100vw - 32px);animation:toast-in var(--transition) forwards;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;gap:10px;padding:10px 16px;display:flex;position:fixed;left:50%}.toast--leaving{animation:toast-out var(--transition-fast) forwards}.toast-icon{color:var(--success);font-size:var(--fs-xs);flex-shrink:0}.toast-message{flex:1}.toast-action{color:var(--info);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0}.toast-action:hover{opacity:var(--opacity-strong)}.user-menu{align-self:stretch;align-items:center;display:flex;position:relative}.user-menu-trigger{height:100%;font-size:var(--fs-sm);font-weight:var(--fw-medium);opacity:var(--opacity-secondary);background:0 0;border-bottom:1px solid #0000;align-items:center;gap:.5rem;padding:0 1.25rem;display:flex}.user-menu-trigger:hover{opacity:1}.user-menu-trigger[aria-expanded=true]{opacity:1;border-bottom-color:var(--bg)}.user-menu-chevron{transition:transform var(--transition-fast);font-size:.65em}.user-menu-chevron.open{transform:rotate(180deg)}.user-menu-dropdown{z-index:100;min-width:max-content;height:var(--nav-height);background:var(--bg);border-left:1px solid var(--border);border-bottom:1px solid var(--border);border-radius:0 0 0 var(--br-md);align-items:center;padding:0 .75rem;display:flex;position:absolute;top:100%;right:0}.user-menu-signout{font-size:var(--fs-sm);align-items:center;gap:.5rem;display:flex}.shell{flex-direction:column;height:100dvh;display:flex}.shell-brand{min-width:0;color:inherit;cursor:pointer;background:0 0;border:none;align-items:flex-end;gap:.5rem;padding:0;display:flex}.shell-logo{width:auto;height:33px;filter:brightness(0) invert(var(--logo-invert,1));flex-shrink:0;margin-bottom:1px;display:block}:root,[data-theme=dark]{--logo-invert:1}[data-theme=light]{--logo-invert:0}.shell-brand-name{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;font-family:Fraunces,serif;font-size:1.35rem;font-weight:600;overflow:hidden}.shell-header{height:var(--nav-height);border-bottom:1px solid var(--border-faint);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 0 0 1.25rem;display:flex}.shell-content{flex-direction:column;flex:1;min-height:0;padding:1.5rem 1.25rem;display:flex;overflow-y:auto}.shell-nav-item{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:inherit;opacity:var(--opacity-dim);transition:opacity var(--transition-fast);flex-direction:column;justify-content:center;align-items:center;gap:.3rem;text-decoration:none;display:flex}.shell-nav-item.active{opacity:1}.shell-nav-item:hover:not(.active){opacity:var(--opacity-subtle)}.shell-sidebar{display:none}@media (width>=768px){.shell{grid-template-columns:56px 1fr;grid-template-rows:var(--nav-height) 1fr;grid-template-areas:"header header""sidebar content";display:grid}.shell-header{grid-area:header}.shell-sidebar{grid-area:sidebar}.shell-content{grid-area:content}.shell-sidebar{border-right:1px solid var(--border-faint);flex-direction:column;align-items:center;gap:.5rem;padding:.75rem 0;display:flex}.shell-sidebar .shell-nav-item{border-radius:var(--br-md);width:40px;height:40px}.shell-sidebar .shell-nav-item span{display:none}.shell-content{padding:2rem 2.5rem}}.task-card{background:var(--surface);border:1px solid var(--border-faint);border-radius:var(--br-md);width:100%;transition:border-color var(--transition-fast), background var(--transition-fast);flex-shrink:0;position:relative;overflow:hidden}.task-card:hover{border-color:var(--border);background:var(--surface-faint)}.task-card-body{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:.25rem;padding:.625rem 1.75rem .625rem .75rem;display:flex}.task-card-icons{align-items:center;gap:.25rem;display:flex;position:absolute;top:.375rem;right:.625rem}.task-card-icon{font-size:var(--fs-xs);color:var(--fg);opacity:var(--opacity-faint);padding:.125rem;line-height:1}.task-card-icon--btn{cursor:pointer;transition:opacity var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.task-card-icon--btn:hover{opacity:var(--opacity-muted)}.task-card-icon--active{color:var(--accent);opacity:1}.task-card-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1.4}.task-card-contractor{font-size:var(--fs-xs);opacity:var(--opacity-muted)}.task-card-controls{border-top:1px solid var(--border-faint);justify-content:space-between;padding:.125rem .375rem;display:flex}.task-card-nav{font-size:var(--fs-base);padding:.125rem .25rem}.task-card-nav:disabled{opacity:.15;cursor:default;pointer-events:none}@media (width<=768px){.task-card-contractor{font-size:var(--fs-sm)}}.task-detail{color:var(--fg);flex-direction:column;flex:1;gap:.75rem;display:flex}.task-detail-edit-btn{font-size:var(--fs-sm)}.task-detail-body{border-bottom:1px solid var(--border-faint);font-size:var(--fs-sm);flex-direction:column;gap:1rem;padding-bottom:1rem;display:flex}.task-detail-cell{flex-direction:column;gap:.375rem;display:flex}.task-detail-cell-label{opacity:var(--opacity-muted)}.planning-detail-grid{grid-template-columns:1fr 1fr;gap:1rem .75rem;display:grid}.task-detail-error{font-size:var(--fs-sm);color:var(--accent)}.task-detail-actions{flex-direction:column;gap:.75rem;margin:-.75rem 0;display:flex}.task-detail-action-row{justify-content:space-between;display:flex}.task-detail-action-row .btn-ghost{opacity:var(--opacity-secondary)}.task-detail-action-row .btn-ghost:hover{opacity:1}.task-detail-btn--danger{color:var(--accent)}.task-detail-confirm-prompt{font-size:var(--fs-sm);color:var(--fg);opacity:var(--opacity-muted);padding-top:.75rem}.task-detail-confirm-row{gap:.75rem;display:flex}.dep-chip-list{flex-wrap:wrap;gap:.25rem .5rem;display:flex}.dep-chip{font-size:var(--fs-sm);color:var(--fg);cursor:pointer;text-underline-offset:3px;opacity:var(--opacity-secondary);transition:opacity var(--transition-fast);background:0 0;border:none;padding:0;-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.dep-chip:hover{opacity:1}.task-form{flex-direction:column;flex:1;gap:1.25rem;display:flex}.task-form-fields{flex-direction:column;gap:1rem;padding-bottom:1rem;display:flex}.task-form-label{font-size:var(--fs-sm);flex-direction:column;gap:.375rem;display:flex}.task-form-label>span{opacity:var(--opacity-muted)}.task-form-required{color:var(--accent)}.task-form-textarea{resize:vertical;min-height:80px}.task-form-input--error{border-color:var(--accent)}.task-form-field-error{font-size:var(--fs-xs);color:var(--accent)}.task-form-error{font-size:var(--fs-sm);color:var(--accent)}.task-form-confirm-prompt{font-size:var(--fs-sm);opacity:var(--opacity-muted)}.task-form-actions,.task-form-confirm-row{gap:.75rem;display:flex}.planning-form-grid{grid-template-columns:1fr 1fr;gap:1rem .75rem;display:grid}.planning-form-grid>.task-form-label,.planning-form-grid .input{min-width:0}.task-form-multiselect{position:relative}.task-form-multiselect-trigger{cursor:pointer;border-color:var(--border);justify-content:space-between;align-items:center;gap:.5rem;display:flex}.task-form-multiselect-trigger.open{border-bottom-color:#0000;border-bottom-right-radius:0;border-bottom-left-radius:0}.task-form-multiselect-trigger.open .select-chevron{transform:rotate(180deg)}.task-form-multiselect-panel{z-index:100;background:var(--bg);border:1px solid var(--border);border-bottom-left-radius:var(--br-md);border-bottom-right-radius:var(--br-md);border-top:none;max-height:240px;padding:.375rem 0;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.task-form-multiselect-option{font-size:var(--fs-sm);cursor:pointer;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}.task-form-multiselect-option:hover{background:var(--surface-faint)}.task-form-multiselect-check{opacity:0;flex-shrink:0;width:.9em;font-size:.7em}.task-form-multiselect-check.checked{opacity:1}.task-form-multiselect-option--dim{opacity:var(--opacity-muted)}.task-form-multiselect-divider{border:none;border-top:1px solid var(--border-faint);margin:.25rem 0}.task-form-multiselect-empty{font-size:var(--fs-sm);opacity:var(--opacity-muted);padding:.5rem .75rem}.settings{flex-direction:column;flex:1;gap:1.25rem;display:flex}.settings-message{font-size:var(--fs-sm);opacity:var(--opacity-muted)}.settings-message--error{color:var(--accent);opacity:1}.settings-section{flex-direction:column;gap:.75rem;display:flex}.settings-section-header{justify-content:space-between;align-items:center;display:flex}.settings-section-title{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.settings-list{border:1px solid var(--border-faint);border-radius:var(--br-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}.settings-list-item{justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.settings-list-item+.settings-list-item{border-top:1px solid var(--border-faint)}.settings-item-info{flex-direction:column;gap:.125rem;min-width:0;display:flex}.settings-item-name{font-size:var(--fs-sm);font-weight:var(--fw-medium)}.settings-item-details{font-size:var(--fs-xs);opacity:var(--opacity-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.settings-item-actions{flex-shrink:0;gap:.25rem;display:flex}.settings-item-state{flex-wrap:wrap;flex:1;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.settings-item-block-msg{font-size:var(--fs-sm);color:var(--accent)}.settings-item-confirm-msg{font-size:var(--fs-sm);opacity:var(--opacity-muted)}.settings-item-confirm-actions{flex-shrink:0;gap:.5rem;display:flex}.settings-item-hard-confirm{flex-direction:column;flex:1;gap:.5rem;display:flex}.settings-item-hard-confirm-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.settings-form{flex-direction:column;gap:1rem;padding-bottom:1rem;display:flex}.settings-form-label{font-size:var(--fs-sm);flex-direction:column;gap:.375rem;display:flex}.settings-form-label>span{opacity:var(--opacity-muted)}.settings-form-required{color:var(--accent)}.settings-form-input--error{border-color:var(--accent)}.settings-form-field-error{font-size:var(--fs-xs);color:var(--accent)}.settings-form-error{font-size:var(--fs-sm);color:var(--accent)}.settings-theme-toggle{border:1px solid var(--border);border-radius:var(--br-md);display:flex;overflow:hidden}.settings-theme-btn{font-size:var(--fs-sm);color:var(--fg);opacity:var(--opacity-muted);cursor:pointer;transition:background var(--transition-fast), opacity var(--transition-fast);background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:.375rem;padding:.625rem;display:flex}.settings-theme-btn+.settings-theme-btn{border-left:1px solid var(--border)}.settings-theme-btn.active{background:var(--surface);opacity:1}.settings-theme-btn:hover:not(.active){background:var(--surface-faint);opacity:var(--opacity-secondary)}.settings-form-actions{gap:.75rem;display:flex}@media (width<=768px){.settings-item-details{font-size:var(--fs-sm)}}.board{flex-direction:column;flex:1;gap:1rem;min-height:0;display:flex}.board-message{font-size:var(--fs-sm);opacity:var(--opacity-muted)}.board-message--error{color:var(--accent);opacity:1}.board-toolbar{flex-direction:column;flex-shrink:0;gap:.5rem;display:flex}.board-toolbar-controls{align-items:center;gap:.75rem;display:flex}.board-toolbar-actions{align-items:center;gap:.5rem;margin-left:auto;display:flex}.board-toolbar-actions .btn-icon{padding:.45rem .625rem}.board-select{cursor:pointer;width:auto;min-width:180px;max-width:320px}.board-tabs{border-bottom:1px solid var(--border-faint);gap:.25rem;padding-bottom:.125rem;display:flex}.board-tab{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--fg);cursor:pointer;opacity:var(--opacity-muted);transition:opacity var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.375rem .75rem}.board-tab:hover:not(:disabled){opacity:var(--opacity-strong)}.board-tab:disabled{opacity:var(--opacity-faint);cursor:default}.board-tab--active{opacity:1;border-bottom-color:var(--fg)}.dag-placeholder{text-align:center;padding:3rem 0}.board-columns{-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;touch-action:pan-x;overscroll-behavior-x:contain;flex:1;gap:.75rem;min-height:0;padding-bottom:.5rem;display:flex;overflow-x:auto}.board-column{background:var(--surface-faint);border:1px solid var(--border-faint);border-radius:var(--br-lg);scroll-snap-align:start;flex-direction:column;flex-shrink:0;min-width:260px;padding:.75rem;display:flex}.board-column-body{flex-direction:column;flex:1;gap:.5rem;min-height:0;display:flex;overflow-y:auto}.board-column-empty{font-size:var(--fs-sm);opacity:var(--opacity-muted);text-align:center;padding:2rem 0}.board-toolbar-btn--active{opacity:1;color:var(--fg)}.board-column--discarded .task-card{opacity:var(--opacity-muted)}.board-search{position:relative}.board-search .input{width:100%;padding-right:2rem}.board-search-clear{cursor:pointer;color:var(--fg);opacity:var(--opacity-muted);font-size:var(--fs-xs);background:0 0;border:none;padding:.125rem;line-height:1;position:absolute;top:50%;right:.5rem;transform:translateY(-50%)}.board-search-clear:hover{opacity:var(--opacity-strong)}.board-blocker-warning{background:var(--info-surface);border:1px solid color-mix(in srgb, var(--info) 25%, transparent);border-radius:var(--br-md);flex-direction:column;gap:.5rem;padding:.625rem .75rem;display:flex}.board-blocker-warning-text{font-size:var(--fs-sm)}.board-blocker-warning-actions{gap:.5rem;display:flex}.board-transition-feedback{background:var(--success-surface);border:1px solid color-mix(in srgb, var(--success) 25%, transparent);border-radius:var(--br-md);flex-direction:column;gap:.5rem;padding:.625rem 2rem .625rem .75rem;display:flex;position:relative}.board-transition-feedback-close{color:var(--fg);opacity:var(--opacity-muted);cursor:pointer;font-size:var(--fs-xs);background:0 0;border:none;padding:.125rem;line-height:1;position:absolute;top:.5rem;right:.5rem}.board-transition-feedback-close:hover{opacity:var(--opacity-strong)}.board-transition-feedback-text{font-size:var(--fs-sm)}.board-transition-feedback-actions{gap:.5rem;display:flex}@media (width>=768px){.board-columns{scroll-snap-type:none}}@media (width<=768px){.board-toolbar-actions .btn-icon{min-height:2.75rem}}
