@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Spline+Sans:wght@400;500;600;700&display=swap";:root{--bg: #f7f8fa;--surface: #ffffff;--ink: #14171c;--ink-soft: #4a5160;--ink-faint: #8b93a3;--line: #e3e6ec;--line-strong: #cfd4de;--brand: #0f1115;--accent: #c2410c;--accent-soft: #fff1ea;--attention: #dc2626;--attention-soft: #fef2f2;--priority: #b45309;--priority-soft: #fff7ed;--mine: #1d4ed8;--mine-soft: #eff4ff;--ok: #16a34a;--radius: 14px;--radius-sm: 10px;--shadow: 0 1px 2px rgba(20,23,28,.04), 0 6px 20px rgba(20,23,28,.06);--shadow-lift: 0 2px 6px rgba(20,23,28,.08), 0 18px 40px rgba(20,23,28,.1);--tap: 48px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Spline Sans,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{min-height:100vh}h1,h2,h3,h4{font-family:Fraunces,Georgia,serif;font-weight:600;line-height:1.15;margin:0;letter-spacing:-.01em}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:16px;width:100%;padding:13px 14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);min-height:var(--tap)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input:disabled,select:disabled,textarea:disabled{background:#eef0f4;color:var(--ink-faint);cursor:not-allowed}textarea{resize:vertical;min-height:90px;line-height:1.45}label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}a{color:inherit;text-decoration:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:0 18px;border-radius:var(--radius-sm);font-weight:600;font-size:15px;border:1px solid transparent;transition:transform .08s ease,background .15s ease,box-shadow .15s ease}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:#23262d}.btn-accent{background:var(--accent);color:#fff}.btn-accent:hover{background:#a8370b}.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn-ghost:hover{background:#f1f3f7}.btn-danger{background:var(--attention-soft);color:var(--attention);border-color:#f3c7c7}.btn-sm{min-height:38px;padding:0 12px;font-size:14px}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.logo{display:block;width:auto;height:auto;object-fit:contain}.topbar .logo{height:60px;cursor:pointer;border-radius:8px}.login-logo .logo{width:280px;max-width:80%;height:auto}.app-shell{min-height:100vh;display:flex;flex-direction:column}.container{width:100%;max-width:1080px;margin:0 auto;padding:0 16px}.topbar{position:sticky;top:0;z-index:50;background:#ffffffdb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar-inner{display:flex;align-items:center;gap:12px;height:76px}.brand-link{display:flex;align-items:center;gap:12px;cursor:pointer}.brand-name{font-family:Fraunces,serif;font-weight:700;font-size:19px;letter-spacing:-.02em}.brand-sub{font-size:11px;color:var(--ink-faint);font-weight:600;text-transform:uppercase;letter-spacing:.08em}.topbar-spacer{flex:1}.nav{display:flex;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px}.nav a{padding:9px 16px;border-radius:999px;font-size:14px;font-weight:600;color:var(--ink-soft);white-space:nowrap}.nav a.active{background:var(--brand);color:#fff}.bottom-nav{display:none}.page{padding:22px 0 96px;flex:1}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.page-head h1{font-size:28px}.section{margin-bottom:26px}.section-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.section-head h2{font-size:18px}.section-count{font-size:12px;font-weight:700;color:var(--ink-faint);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:2px 9px}.section-rail{width:4px;height:20px;border-radius:2px;background:var(--ink-faint)}.rail-mine{background:var(--mine)}.rail-attention{background:var(--attention)}.rail-priority{background:var(--priority)}.job-grid{display:grid;grid-template-columns:1fr;gap:12px}.job-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);transition:transform .1s ease,box-shadow .15s ease;display:block}.job-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-1px)}.job-card.flag-attention{border-left:4px solid var(--attention)}.job-card.flag-priority{border-left:4px solid var(--priority)}.job-card.flag-mine{border-left:4px solid var(--mine)}.job-title{font-family:Fraunces,serif;font-size:17px;font-weight:600;margin-bottom:4px}.job-meta{font-size:13px;color:var(--ink-soft);display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px}.job-meta span{display:inline-flex;align-items:center;gap:5px}.badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.badge{font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;color:#fff;white-space:nowrap;line-height:1.4}.badge-soft{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink-soft)}.chip-attention{background:var(--attention-soft);color:var(--attention);border:1px solid #f3c7c7}.chip-priority{background:var(--priority-soft);color:var(--priority);border:1px solid #fde2c0}.chip-mine{background:var(--mine-soft);color:var(--mine);border:1px solid #cdddff}.task-line{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.task-line:first-child{border-top:none}.task-check{width:26px;height:26px;min-width:26px;border-radius:7px;border:2px solid var(--line-strong);background:var(--surface);display:inline-flex;align-items:center;justify-content:center}.task-check.done{background:var(--ok);border-color:var(--ok);color:#fff}.task-text{font-size:14px}.task-text.done{text-decoration:line-through;color:var(--ink-faint)}.task-row{padding:8px 0;border-top:1px solid var(--line)}.task-row:first-child{border-top:none}.task-meta-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px;margin-left:36px}.task-assignee-select{width:auto;min-width:110px;max-width:170px;min-height:36px;padding:6px 8px;font-size:13px;border-radius:8px;flex-shrink:0}.task-due-input{width:auto;min-height:36px;padding:6px 8px;font-size:13px;border-radius:8px;flex-shrink:0;max-width:170px}.task-add-grid{display:grid;gap:8px;grid-template-columns:2fr 1fr 1fr auto}.task-add-grid input,.task-add-grid select{min-height:42px}.mobile-only{display:none}.signout-mobile{font-size:20px;min-width:44px;padding:0;line-height:1}@media (max-width: 759px){.task-add-grid{grid-template-columns:1fr}.mobile-only{display:inline-flex}}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field-full{grid-column:1 / -1}.card-pad{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.hint{font-size:12px;color:var(--ink-faint);margin-top:4px}.note{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:10px}.note-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px}.note-author{font-weight:700;font-size:13px}.note-time{font-size:11px;color:var(--ink-faint);white-space:nowrap}.note-body{font-size:14px;white-space:pre-wrap;word-break:break-word}.note-edited{font-size:11px;color:var(--ink-faint);font-style:italic}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-dow{font-size:11px;font-weight:700;color:var(--ink-faint);text-align:center;text-transform:uppercase;letter-spacing:.05em;padding-bottom:4px}.cal-cell{background:var(--surface);border:1px solid var(--line);border-radius:8px;min-height:78px;padding:6px;overflow:hidden}.cal-cell.today{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.cal-cell.dim{background:#fbfbfc}.cal-date{font-size:12px;font-weight:700;color:var(--ink-soft)}.cal-event{font-size:10px;font-weight:600;color:#fff;border-radius:5px;padding:2px 5px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt{overflow-x:auto}.gantt-row{display:grid;grid-template-columns:200px 1fr;gap:10px;align-items:center;margin-bottom:8px}.gantt-label{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-track{position:relative;height:26px;background:#f1f3f7;border-radius:6px}.gantt-bar{position:absolute;top:3px;height:20px;border-radius:5px;color:#fff;font-size:11px;font-weight:600;padding:0 6px;display:flex;align-items:center;overflow:hidden}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14171c73;display:flex;align-items:flex-end;justify-content:center;z-index:100;padding:0}.modal{background:var(--surface);width:100%;max-width:520px;border-radius:18px 18px 0 0;padding:22px;box-shadow:var(--shadow-lift);max-height:92vh;overflow-y:auto}.modal h3{font-size:20px;margin-bottom:6px}.empty{text-align:center;color:var(--ink-faint);padding:40px 16px;font-size:14px}.row{display:flex;gap:10px;align-items:center}.row-wrap{flex-wrap:wrap}.list-item{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 8px 8px 14px;margin-bottom:8px}.list-item .name{flex:1;font-weight:500}.toast{position:fixed;bottom:90px;left:50%;transform:translate(-50%);background:var(--brand);color:#fff;padding:12px 18px;border-radius:999px;font-size:14px;font-weight:600;z-index:200;box-shadow:var(--shadow-lift)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(1200px 600px at 80% -10%,#ffece2 0%,transparent 55%),var(--bg)}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-lift);padding:30px 26px;width:100%;max-width:400px}.login-logo{display:flex;flex-direction:column;align-items:center;gap:14px;margin-bottom:22px}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.fade-up{animation:fadeUp .3s ease both}@media (min-width: 760px){.job-grid.two{grid-template-columns:1fr 1fr}.modal{border-radius:18px;align-self:center}.modal-backdrop{align-items:center}}@media (max-width: 759px){.desktop-nav{display:none}.form-grid{grid-template-columns:1fr}.page-head h1{font-size:23px}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:60;background:#fffffff0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom))}.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;font-size:10px;font-weight:700;color:var(--ink-faint);min-height:var(--tap);justify-content:center}.bottom-nav a.active{color:var(--accent)}.bottom-nav .ico{font-size:19px;line-height:1}.gantt-desktop-only{display:none}}.mobile-gantt-list{display:none}@media (max-width: 759px){.mobile-gantt-list{display:grid}}
