:root{--canvas:#f6f6f6;--panel:#fff;--line:#d9d9d9;--text:#4c5968;--muted:#8a95a1;--accent:#5c87b2;--hover-bg:#f4f8fc;--hover-line:#cbd6e1;--content-width:920px;color:var(--text);background:var(--canvas);font-family:Segoe UI,Tahoma,Arial,sans-serif;font-size:12px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{background:var(--canvas);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Segoe UI,Tahoma,Arial,sans-serif;font-size:12px}a{color:inherit;text-decoration:none}button{color:var(--text);cursor:pointer;font-family:inherit;font-size:12px}input,textarea{color:var(--text);font-family:inherit;font-size:12px}.app-shell{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;min-height:100vh;padding:40px 48px 48px}.app-shell input,.app-shell textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.app-main{width:100%;max-width:var(--content-width);margin:0 auto}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.page-meta{gap:4px;display:grid}.page-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:11px}.page-title{color:#44515f;margin:0;font-size:24px;font-weight:600}.page-actions{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);background:var(--panel);height:30px;color:var(--text);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:hover{background:var(--hover-bg);border-color:var(--hover-line)}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:#4f7aa3;border-color:#4f7aa3}.btn--ghost{background:0 0}.btn--danger{color:#933030}.btn--danger:hover{background:#fbeaea;border-color:#e3bcbc}.btn--sm{height:24px;padding:0 10px;font-size:11px}:root{--task-date-width:150px;--task-image-width:32px}.stage{flex-direction:column;gap:4px;display:flex}.proj-strip{grid-template-columns:minmax(0,1fr) 150px 110px;align-items:stretch;width:100%;display:grid}.proj-name,.proj-status,.proj-action{border:1px solid var(--line);background:var(--panel);color:#566270;align-items:center;height:38px;transition:background-color .15s,border-color .15s;display:flex}.proj-status,.proj-action{justify-content:center;margin-left:-1px;padding:0 8px}.proj-name{white-space:nowrap;text-overflow:ellipsis;padding:0 12px;font-size:13px;font-weight:500;overflow:hidden}.proj-strip:hover .proj-name,.proj-strip:hover .proj-status,.proj-strip:hover .proj-action{background:var(--hover-bg);border-color:var(--hover-line)}.status-pill{border:1px solid var(--line);color:#596573;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fbfbfb;align-items:center;height:22px;padding:0 10px;font-size:12px;font-weight:500;transition:filter .12s;display:inline-flex}.status-pill.is-open{color:#3d7a48;background:#eaf6ec;border-color:#9dcaa4}.status-pill.is-closed{color:#933030;background:#fbe9e9;border-color:#d99a9a}.status-pill:hover{filter:brightness(.96)}.proj-action button{border:1px solid var(--line);color:#446584;cursor:pointer;background:#f0f5fa;height:26px;padding:0 16px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s}.proj-action button:hover{background:#e3eef8;border-color:#c7d5e3}@media (width<=640px){.proj-strip{grid-template-columns:minmax(0,1fr) 110px}.proj-status{display:none}}.proj-rename-input{border:1px solid var(--line);background:var(--panel);width:100%;height:26px;color:var(--text);outline:none;padding:0 8px;font-family:inherit;font-size:13px;font-weight:500}.proj-rename-input:focus{border-color:#446584}.task-strip{grid-template-columns:minmax(0, 1fr) var(--task-image-width) var(--task-date-width);align-items:stretch;width:100%;display:grid;position:relative}.separator-block{padding:22px 0 1px;position:relative}.task-strip.is-dragging,.separator-block.is-dragging{opacity:.35}.task-strip-ghost{pointer-events:none;z-index:70;background:var(--panel);opacity:.96;position:fixed;top:0;left:0;box-shadow:0 10px 22px #00000038}.task-strip-ghost .task-title,.task-strip-ghost .task-image-cell,.task-strip-ghost .task-date-cell{background:var(--panel);border-color:var(--hover-line)}.task-strip.drop-before:before,.task-strip.drop-after:after,.separator-block.drop-before:before,.separator-block.drop-after:after{content:"";pointer-events:none;border-top:1px dashed #8fb0cf;position:absolute;left:0;right:0}.task-strip.drop-before:before,.separator-block.drop-before:before{top:-2px}.task-strip.drop-after:after,.separator-block.drop-after:after{bottom:-2px}.separator-text{color:#70ad47;letter-spacing:.01em;cursor:grab;align-items:center;min-height:20px;padding-left:10px;font-size:12px;font-weight:700;display:inline-flex}.separator-text:active{cursor:grabbing}.separator-input{border:1px solid var(--line);width:240px;height:24px;color:var(--text);font:inherit;background:#fbfbfb;outline:none;padding:0 8px;font-weight:700}.separator-input:focus{border-color:var(--accent);background:#fff}.task-title,.task-image-cell,.task-date-cell{border:1px solid var(--line);background:var(--panel);color:#5a6673;align-items:center;height:25px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s;display:flex}.task-image-cell{color:var(--muted);cursor:pointer;justify-content:center;margin-left:-1px}.task-image-cell.is-empty svg{opacity:.18}.task-image-cell:hover svg{opacity:1}.task-image-cell svg{width:18px;height:18px;display:block}.task-title{white-space:nowrap;text-overflow:ellipsis;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-y;padding:0 10px;overflow:hidden}.task-title:active,.task-date-cell:active{cursor:grabbing}.task-date-cell{color:var(--muted);white-space:nowrap;cursor:grab;justify-content:center;margin-left:-1px;padding:0 8px;font-size:11px;font-weight:400}.task-strip:hover .task-title,.task-strip:hover .task-image-cell,.task-strip:hover .task-date-cell{background:var(--hover-bg);border-color:var(--hover-line)}@media (width<=640px){.task-strip{grid-template-columns:minmax(0, 1fr) var(--task-image-width)}.task-date-cell{display:none}}.task-strip.is-completed .task-title,.task-strip.is-completed .task-image-cell,.task-strip.is-completed .task-date-cell{color:#a3acb6;background:#f3f4f6;font-weight:400}.task-strip.is-completed:hover .task-title,.task-strip.is-completed:hover .task-image-cell,.task-strip.is-completed:hover .task-date-cell{border-color:var(--hover-line);background:#eceef2}.strip-input{width:100%;height:100%;font:inherit;color:var(--text);background:0 0;border:0;outline:none;margin:0;padding:0 8px}.add-row{grid-template-columns:minmax(0, 1fr) var(--task-date-width);width:100%;margin-top:8px;display:grid}.add-row .task-title{background:#fbfbfb}.add-row input[type=text]{width:100%;height:100%;font:inherit;color:var(--text);background:0 0;border:0;outline:none;padding:0 10px}.add-row .add-btn{border:1px solid var(--line);background:var(--panel);width:100%;height:25px;color:var(--accent);cursor:pointer;white-space:nowrap;border-left:0;padding:0 14px;font-size:12px;font-weight:500}.add-row .add-btn:hover{background:var(--hover-bg);border-color:var(--hover-line)}.add-row .add-btn:disabled{color:var(--muted);cursor:default;background:var(--panel)}.gallery-fs{z-index:50;background:#0006;position:fixed;inset:0}.gallery-fs-stage{background:var(--canvas);grid-template-rows:64px 1fr 80px;display:grid;position:absolute;inset:0}.gallery-fs-stage.is-readonly{grid-template-rows:64px 1fr}.gallery-fs-topbar,.gallery-fs-bottombar{background:var(--panel);align-items:center;gap:8px;padding:0 16px;display:flex}.gallery-fs-topbar{border-bottom:1px solid var(--line);justify-content:space-between}.gallery-fs-bottombar{border-top:1px solid var(--line);justify-content:center;gap:12px}.gallery-btn{border:1px solid var(--line);background:var(--panel);height:36px;font:inherit;color:var(--text);cursor:pointer;padding:0 18px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}.gallery-btn:hover:not(:disabled){background:var(--hover-bg);border-color:var(--hover-line)}.gallery-btn:disabled{opacity:.5;cursor:default}.gallery-btn--danger{color:#fff;background:#c8324a;border-color:#c8324a}.gallery-btn--danger:hover:not(:disabled){color:#fff;background:#b00020;border-color:#b00020}.gallery-btn--ghost{color:var(--muted)}.gallery-fs-photo{background:var(--canvas);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.gallery-fs-img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:auto;max-width:100%;height:auto;max-height:100%}.gallery-fs-empty{color:var(--muted);font-size:13px}.gallery-fs-nav{border:1px solid var(--line);background:var(--panel);width:40px;height:56px;color:var(--text);cursor:pointer;justify-content:center;align-items:center;font-size:26px;line-height:1;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gallery-fs-nav:hover{background:var(--hover-bg);border-color:var(--hover-line)}.gallery-fs-nav--prev{left:12px}.gallery-fs-nav--next{right:12px}.gallery-icon-btn{border:1px solid var(--line);background:var(--panel);width:52px;height:52px;color:var(--accent);cursor:pointer;justify-content:center;align-items:center;transition:background-color .15s,border-color .15s;display:flex}.gallery-icon-btn:hover:not(:disabled){background:var(--hover-bg);border-color:var(--hover-line)}.gallery-icon-btn:disabled{opacity:.5;cursor:default}.gallery-icon-btn svg{width:26px;height:26px}.share-overlay{z-index:55;background:#1c242e73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.share-panel{background:var(--panel);border:1px solid var(--line);border-radius:4px;flex-direction:column;width:min(480px,100%);display:flex}.share-panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.share-panel-title{color:var(--text);font-size:13px;font-weight:600}.share-panel-close{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 6px;font-size:22px;line-height:1}.share-panel-close:hover{color:var(--text)}.share-panel-body{flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex}.share-panel-url{border:1px solid var(--line);width:100%;height:30px;color:var(--text);font:inherit;background:#fbfbfb;outline:none;padding:0 10px;font-size:12px}.share-panel-url:focus{border-color:var(--accent);background:#fff}.share-panel-actions{justify-content:space-between;gap:8px;display:flex}.share-panel-revoke{color:#fff;background:#c8324a;border-color:#c8324a}.share-panel-revoke:hover{color:#fff;background:#b00020;border-color:#b00020}.empty{border:1px dashed var(--line);background:var(--panel);text-align:center;color:var(--muted);padding:24px;font-size:12px}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:56px 48px 48px;display:flex}.login-card{border:1px solid var(--line);background:var(--panel);gap:14px;width:100%;max-width:360px;padding:18px;display:grid}.login-head{gap:4px;display:grid}.login-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:11px}.login-title{color:#44515f;margin:0;font-size:18px;font-weight:600}.login-form{gap:12px;display:grid}.login-form label{color:var(--muted);gap:4px;font-size:11px;display:grid}.login-form input{border:1px solid var(--line);width:100%;height:30px;color:var(--text);background:#fbfbfb;outline:none;padding:0 8px}.login-form input:focus{border-color:var(--accent);background:#fff}.login-actions{justify-content:flex-end;display:flex}.login-error{color:#933030;background:#fbeaea;border:1px solid #e3bcbc;padding:8px 10px;font-size:12px}.context-menu{z-index:50;border:1px solid var(--line);background:var(--panel);min-width:170px;padding:4px;position:fixed;box-shadow:0 10px 24px #1e2a3824}.context-menu button{width:100%;height:26px;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;padding:0 10px;display:flex}.context-menu button:hover{background:var(--hover-bg)}.context-menu button.danger{color:#933030}.context-menu button.danger:hover{background:#fbeaea}.topbar{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:24px;font-size:11px;display:flex}.topbar-user{align-items:center;gap:10px;display:flex}.crumbs{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:6px;font-size:11px;display:flex}.crumbs a:hover{color:var(--text)}.crumbs .sep{color:var(--line)}
