:root { --primary:#931533; --sidebar:#35121e; --bg:#f8f6f4; --text:#30232a; --muted:#85747e; --line:#eee5e8; }
#toast { position:fixed; inset:auto 24px 24px auto; margin:0; border:0; z-index:2147483647; max-width:calc(100vw - 48px); overflow-wrap:anywhere; }
#toast::backdrop { background:transparent; pointer-events:none; }
.save-picker { position:relative; }
.save-picker summary { cursor:pointer; padding:8px 12px; border:1px solid var(--line); border-radius:8px; list-style:none; }
.save-menu { position:absolute; right:0; top:100%; min-width:210px; padding:6px; background:white; border:1px solid var(--line); border-radius:8px; z-index:100; box-shadow:0 8px 30px #17203326; }
.save-menu button { display:block; width:100%; text-align:left; border:0; }
#savingDialog { width:min(950px,95vw); max-height:85vh; overflow:auto; }
.saving-content { padding:24px; }
#dateChangesResult { overflow:auto; }
#dateChangesResult table { width:100%; border-collapse:collapse; }
#dateChangesResult th,#dateChangesResult td { padding:10px; text-align:left; border-bottom:1px solid var(--line); }
#dateChangesResult del,.previous-date { color:#a34a58; }
#dateChangesResult strong { display:block; color:var(--primary); }
.date-cell:has(.previous-date) { flex-direction:column; justify-content:center; }
.previous-date { font-size:10px; display:block; }
#timelineWarning { margin:10px 16px; padding:12px; background:#fff3cd; color:#664d03; border-radius:8px; overflow-wrap:anywhere; }
/* One calm palette for both Gantt views; overdue epics retain the brand accent. */
.timeline .bar, #cardGantt .epic-summary-bar {
  --bar-bg:#e5e7eb; --bar-text:#374151;
  background:var(--bar-bg)!important; color:var(--bar-text);
  box-shadow:inset 0 0 0 1px #0000000d,0 1px 2px #30232a0a;
}
.timeline .bar[data-status="doing"], #cardGantt .epic-summary-bar[data-status="doing"] { --bar-bg:#fef08a; --bar-text:#713f12; }
.timeline .bar.overdue-bar, #cardGantt .epic-summary-bar.overdue-bar { --bar-bg:#fecaca; --bar-text:#991b1b; }
.timeline .bar.type-epic.overdue-bar, #cardGantt .epic-summary-bar.type-epic.overdue-bar { --bar-bg:var(--primary); --bar-text:#fff; }
.timeline .bar.completed-bar, #cardGantt .epic-summary-bar.completed-bar { --bar-bg:#bbf7d0; --bar-text:#14532d; }
.timeline .bar.type-epic, .timeline .bar.type-epic[data-status], #cardGantt .epic-summary-bar.type-epic[data-status] { --bar-bg:var(--primary); --bar-text:#fff; }
.progress-cell { display:flex; align-items:center; gap:3px; }
.inline-duration { width:100%; min-width:0; padding:5px; font:inherit; color:inherit; border:1px solid transparent; background:transparent; }
.inline-duration:hover,.inline-duration:focus { background:#fff; border-color:#c9a3ae; }
.inline-duration:disabled { border-color:transparent; background:transparent; }
#taskList .inline-progress { width:60px; min-width:0; padding:5px 2px; border:1px solid transparent; background:transparent; color:inherit; font:inherit; border-radius:4px; }
#taskList .inline-progress:hover,#taskList .inline-progress:focus { border-color:#c9a3ae; background:#fff; outline:none; }
.timeline .bar-fill { background:currentColor; opacity:.08; border-right:0; }
.timeline .bar-label { font-size:11px; font-weight:600; }
#taskList .row-number,#taskList .progress-cell,#taskList .predecessor-input,#taskList .inline-date { font-size:11px; font-variant-numeric:tabular-nums; }
.stats { grid-template-columns:repeat(5,minmax(0,1fr)); }
#projectDelayValue { font-size:20px; overflow-wrap:anywhere; }
#delayCard[data-tone="none"] strong { color:#15803d; }
#delayCard[data-tone="medium"] strong { color:#a16207; }
#delayCard[data-tone="high"] strong { color:#dc2626; }
#savePicker summary::marker { content:''; }
#savePicker summary::-webkit-details-marker { display:none; }
@media(max-width:1100px){.stats{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:700px){.stats{grid-template-columns:repeat(2,minmax(0,1fr));}}
.inline-comment { width:100%; height:calc(var(--row-height) - 8px); resize:none; font:inherit; padding:4px; border:1px solid var(--line); border-radius:5px; }
.task-title-head { flex-direction:column; justify-content:center; }
.hierarchy-actions { display:flex; gap:4px; flex-wrap:wrap; }
.hierarchy-column-button.hidden { display:none; }
.gantt-wrap { grid-template-rows:106px auto; }
.controls-head { justify-content:center; }
#selectAllTasks { width:15px; height:15px; padding:0; margin:0; }
.task-list .row-controls { display:flex; align-items:center; justify-content:center; gap:4px; padding:0 2px; }
.task-list .row-number { display:flex; align-items:center; justify-content:center; padding:0 2px; font-size:11px; }
.row-grip { border:0; background:transparent; padding:0; width:10px; flex-shrink:0; cursor:grab; touch-action:none; color:var(--muted); }
.row-grip:active { cursor:grabbing; }
.hierarchy-column-button { padding:4px 1px; font-size:10px; white-space:nowrap; color:var(--primary); }
.task-list .task-row.selected { background:#f5e6eb; }
.task-list .task-row.drop-before { box-shadow:inset 0 3px var(--primary); }
.task-list .task-row.drop-after { box-shadow:inset 0 -3px var(--primary); }
.task-type-menu summary { padding:8px 12px; cursor:pointer; }
.task-type-menu button { display:block; width:100%; padding-left:24px; }
.task-select { width:14px; margin:0 3px 0 0; padding:0; }
.task-row.selected { background:#f5e6eb; }
.timeline .bar.selected { outline:2px solid var(--primary); outline-offset:2px; }
.inline-status { width:100%; min-width:0; padding:5px 2px; font-size:11px; }
.inline-status[data-tone="todo"] { background:#e5e7eb; color:#374151; border-color:#9ca3af; }
.inline-status[data-tone="doing"] { background:#fef08a; color:#713f12; border-color:#eab308; }
.inline-status[data-tone="done"] { background:#bbf7d0; color:#14532d; border-color:#22c55e; }
.inline-status[data-tone="overdue"] { background:#fecaca; color:#991b1b; border-color:#ef4444; font-weight:700; }
.task-list .task-row.drop-inside { background:#e1f5e6; box-shadow:inset 0 0 0 2px #23864a; }
.task-row.drop-inside::after { content:'Поместить в эпик'; position:absolute; right:8px; top:2px; background:#23864a; color:white; font-size:10px; padding:2px 6px; pointer-events:none; }
.hide-completed-label { display:flex; flex-direction:row; align-items:center; gap:5px; white-space:normal; text-transform:none; margin:0; font-size:10px; letter-spacing:normal; }
.hide-completed-label input { flex:none; width:14px; padding:0; }
#columnMenu { min-width:310px; max-height:70vh; overflow:auto; }
#columnMenu label { display:flex; flex-direction:row; align-items:center; gap:6px; }
#columnMenu [data-move-column] { padding:2px 6px; font-size:14px; margin-left:auto; }
#columnMenu [data-move-column] + [data-move-column] { margin-left:0; }
.bar-move { position:absolute; left:0; top:0; bottom:0; width:14px; cursor:ew-resize; z-index:4; touch-action:none; }
.bar:hover .bar-move { background:#ffffff80; border-right:2px solid #fff; }
.inline-text { width:100%; min-width:0; padding:5px; border:1px solid transparent; background:transparent; }
.inline-text:focus { background:white; border-color:var(--primary); }
.task-name > span { flex:1; min-width:0; white-space:normal; }
.task-name > .epic-toggle, .task-name > .type-icon { flex-shrink:0; }
.task-name textarea.inline-text { display:block; height:calc(var(--row-height, 58px) - 8px); resize:none; overflow:auto; white-space:pre-wrap; overflow-wrap:anywhere; font:inherit; color:inherit; line-height:1.35; }
.draft-row input { min-width:0; width:100%; padding:5px; }
.draft-actions { padding:8px; display:flex; gap:8px; background:#f5e6eb; }
.task-name.type-epic { color:var(--primary); }
.sidebar { background:#35121e; }
.ompk-brand { display:flex; flex-direction:column; align-items:flex-start; gap:18px; padding:0 0 26px; flex-shrink:0; }
.company-logo { padding:10px 9px; border-radius:10px; background:#fffdf8; box-shadow:0 6px 22px #18081225; }
.company-logo img { display:block; width:148px; height:auto; }
.wordmark { display:flex; flex-direction:column; position:relative; padding-left:3px; }
.wordmark strong { font-family:Arial,Helvetica,sans-serif; font-size:39px; line-height:1; font-weight:900; letter-spacing:.06em; }
.wordmark .projects-signature { display:block; width:132px; height:40px; margin-top:0; }
.brand-lockup { display:flex; align-items:center; gap:7px; }
.projects-mascot { width:66px; height:99px; object-fit:contain; object-position:center; background:#35121e; border-radius:0; flex-shrink:0; }
.sidebar .brand-lockup { gap:6px; }
.sidebar .wordmark strong { font-size:32px; }
.sidebar .wordmark .projects-signature { width:110px; height:34px; }
.sidebar .projects-mascot { width:48px; height:72px; }
@media(min-width:601px) {
  .sidebar .ompk-brand { position:relative; width:100%; max-width:238px; min-height:145px; gap:16px; }
  .sidebar .company-logo { position:relative; z-index:2; width:calc(100% - 72px); max-width:166px; padding:10px 7px; }
  .sidebar .wordmark { z-index:2; }
  .sidebar .company-logo img { width:100%; }
  .sidebar .projects-mascot {
    position:absolute; top:var(--mascot-top,-8px); right:calc(-4px - 5mm);
    width:auto; height:var(--mascot-height,118px); max-width:none;
    pointer-events:none; transition:opacity 100ms ease; background:transparent;
  }
  .sidebar .mascot-pushing {
    top:var(--mascot-pushing-top,24px); height:var(--mascot-pushing-height,125px);
    right:calc(-18px - 5mm); opacity:0; transform-origin:right bottom;
    transform:scaleX(calc(1 - var(--mascot-pressure,0) * .12));
  }
  .sidebar .mascot-bracing .projects-mascot:not(.mascot-pushing) { opacity:0; }
  .sidebar .mascot-bracing .mascot-pushing { opacity:1; }
}
.mascot-pushing { display:none; }
.mascot-thrown-skewer {
  position:fixed; z-index:2147483000; pointer-events:none; opacity:0;
  object-fit:contain; max-width:none;
  clip-path:polygon(6.7% 1%,11.5% 2%,14.5% 3%,18.3% 8%,19.1% 10%,18% 12.5%,14% 11%,10% 6%);
  transform-origin:9% 3%;
}
@media(min-width:601px) {
  .sidebar .mascot-pushing { display:block; }
  .mascot-thrown-skewer.is-thrown { animation:mascot-throw-at-viewer 720ms cubic-bezier(.55,.02,.9,.45) forwards; }
}
@keyframes mascot-throw-at-viewer {
  0% { opacity:1; transform:perspective(600px) rotateX(0deg) scale(1); }
  25% { opacity:1; transform:perspective(600px) rotateX(-15deg) scale(1.3); }
  85% { opacity:1; transform:perspective(600px) rotateX(-25deg) scale(9); }
  100% { opacity:0; transform:perspective(600px) rotateX(-30deg) scale(22); }
}
@media(prefers-reduced-motion:reduce) {
  .sidebar .projects-mascot { transition:none; }
  .mascot-thrown-skewer.is-thrown { animation:none; }
  .sidebar .mascot-throw-frames { animation:none!important; }
}
.login-identity .wordmark .projects-signature { filter:brightness(0) saturate(100%) invert(15%) sepia(70%) saturate(2400%) hue-rotate(325deg); }
.sidebar .nav { color:#d7b7c5; }
.sidebar .nav:hover { color:white; background:#ffffff12; }
.sidebar .project-tree { border-left-color:#916071; }
.sidebar .project-link.active { background:#931533; box-shadow:inset 3px 0 #f7e31a; color:#fff; }
.sidebar #projectsNav.active { background:#ffffff17; color:#fff; }
.sidebar-bottom { border-color:#ffffff20; }
.sidebar-bottom small { color:#d0aabb; }
.sidebar-bottom .avatar { flex-shrink:0; }
.avatar { background:#931533; }
.logout { color:#ecc8d5; flex-shrink:0; }
.sidebar-bottom > div:not(.avatar) { min-width:0; }
#profileName { display:block; overflow:hidden; text-overflow:ellipsis; }
.primary { box-shadow:0 5px 14px #93153325; }
.primary:hover { background:#74112a!important; }
input:focus,select:focus,textarea:focus { outline:2px solid #93153325; border-color:#b35670; }
.login-screen { background:radial-gradient(ellipse at 75% 10%,#ae294a66,transparent 48%),radial-gradient(ellipse at 5% 90%,#f7e31a12,transparent 45%),#30101e; }
.login-card { width:min(420px,100%); background:#fff; border:1px solid #ffffff22; padding:36px; }
.login-identity .projects-mascot { background:#fff; }
.login-identity { display:flex; flex-direction:column; align-items:center; gap:25px; padding:5px 0 10px; }
.login-identity > img { display:block; width:186px; height:auto; }
.login-identity .wordmark { align-items:center; }
.login-identity .wordmark strong { font-size:48px; color:#621127; }
.login-identity .projects-signature { color:#931533; }
.login-card h2,.login-card > p:not(.error) { text-align:center; }
.analyst-stats span { background:#f3e6eb; color:#6e263d; }
.scale-menu .scale.active,.context-menu button:hover { background:#f9edf1; color:#931533; }
.task-row.dependency-highlight { background:#fbecf1; }
.panel,.stats article { border-color:#eee5e8; }
@media(max-width:900px) { .ompk-brand { padding-left:0; } .company-logo img { width:140px; } .brand .projects-signature { display:flex!important; } }
@media(max-width:600px) { .sidebar .ompk-brand { display:flex; flex-direction:row; align-items:center; gap:18px; padding-bottom:12px; } .company-logo img { width:110px; } .wordmark strong { font-size:25px; } .wordmark .projects-signature { font-size:19px; } .sidebar .project-tree { margin-bottom:8px; } }

/* Two actual throwing poses, followed by the palms-against-wall pose. */
.mascot-throw-frames { display:none; }
@media(min-width:601px) {
  .sidebar .mascot-throw-frames {
    display:block; position:absolute; pointer-events:none; opacity:0;
    top:var(--mascot-throw-top,18px); right:calc(-8px - 5mm);
    height:var(--mascot-throw-height,130px); width:var(--mascot-throw-width,100px);
    background:url('/projects-mascot-throw-frames-v1.png') 0 0 / 200% 100% no-repeat;
    transform-origin:50% 90%;
  }
  .sidebar [data-throw-phase] .projects-mascot { opacity:0; }
  .sidebar [data-throw-phase] .mascot-throw-frames { opacity:1; }
  .sidebar [data-throw-phase="windup"] .mascot-throw-frames { animation:mascot-windup 420ms ease-in-out both; }
  .sidebar [data-throw-phase="release"] .mascot-throw-frames { background-position:100% 0; animation:mascot-release 180ms ease-out both; }
}
@keyframes mascot-windup {
  from { transform:translateX(1px) rotate(0deg); }
  to { transform:translateX(-5px) rotate(-9deg); }
}
@keyframes mascot-release {
  from { transform:translateX(-5px) rotate(-9deg); }
  to { transform:translateX(3px) rotate(5deg); }
}
