sdlc-hub/web/src/issues/issues.css
Andrey Epifancev d3e8d969c8 style(web): верхняя панель на узком экране, контраст текста Notice (#65)
Тема и меню «…» остаются в первой строке панели, статус данных — второй;
на 390 px выбор проекта сжимается. Текст Notice — основным цветом.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:24:57 +04:00

121 lines
10 KiB
CSS

.issues{display:flex;flex-direction:column;gap:var(--space-4);padding-top:var(--space-6)}
.issues .ui-page-header{margin-bottom:0}
.issue-filters{display:flex;flex-direction:column;gap:var(--space-3)}
.issue-filters__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}
.issue-filters__search{flex:1 1 280px;min-width:0;max-width:480px}
.issue-filters__row .ui-btn .ui-badge{margin-left:var(--space-2)}
.issue-filters__row .ui-btn[aria-pressed="true"],.issue-filters__row .ui-btn[aria-expanded="true"]{border-color:var(--color-border-selected);color:var(--color-action-primary)}
.issue-filters__chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.issue-filters__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3) var(--space-4)}
@media (max-width:899.98px){.issue-filters__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:639.98px){.issue-filters__grid{grid-template-columns:minmax(0,1fr)}.issue-filters__search{max-width:none}}
/* прокрутка внутри панели — только на узких экранах: overflow на предке отключает липкую шапку страницы */
@media (max-width:1099.98px){.issue-table-wrap{overflow-x:auto}}
.issue-table th:first-child{border-top-left-radius:calc(var(--radius-xl) - 1px)}
.issue-table th:last-child{border-top-right-radius:calc(var(--radius-xl) - 1px)}
.issue-table tbody tr:last-child td:first-child{border-bottom-left-radius:calc(var(--radius-xl) - 1px)}
.issue-table tbody tr:last-child td:last-child{border-bottom-right-radius:calc(var(--radius-xl) - 1px)}
.issue-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-body);line-height:var(--lh-body)}
.issue-table th,.issue-table td{height:44px;padding:0 var(--space-3);text-align:left;vertical-align:middle;border-bottom:1px solid var(--color-border-default)}
.issue-table tbody tr:last-child td{border-bottom:0}
.issue-table th{position:sticky;top:0;z-index:1;background:var(--color-bg-surface);color:var(--color-text-secondary);font-size:var(--fs-caption);line-height:var(--lh-caption);font-weight:600;white-space:nowrap}
.issue-table td{color:var(--color-text-primary)}
.issue-table tbody tr{cursor:pointer}
.issue-table tbody tr:hover td{background:var(--color-bg-hover)}
.issue-table__key{white-space:nowrap}
.issue-table__key a{font-family:var(--font-mono);font-size:13px;color:var(--color-action-primary);text-decoration:none;margin-right:var(--space-2)}
.issue-table__key a:hover{text-decoration:underline}
.issue-table__sum{min-width:240px}
.issue-table td.overdue{color:var(--color-status-error);font-weight:600}
.issues__hint{margin:0;color:var(--color-text-secondary)}
.issues__more{display:flex;justify-content:center}
/* карточка задачи в окне (design 13, 19): всё через токены */
.issue{font-size:var(--fs-body);line-height:var(--lh-body)}
.issue a{color:var(--color-action-primary)}
.issue a.ui-btn{color:var(--color-text-primary);text-decoration:none}
.issue .hint{margin:0;font-size:var(--fs-body);color:var(--color-text-secondary)}
.issue--state{padding-top:var(--space-6)}
.issue-head{position:sticky;top:0;z-index:1;background:var(--color-bg-surface);padding:var(--space-6) 0 var(--space-4);border-bottom:1px solid var(--color-border-default);margin-bottom:var(--space-5)}
.issue-head .row1{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.issue-head .key{font-family:var(--font-mono);font-size:13px;font-weight:400;color:var(--color-text-secondary)}
.issue-head .spacer{flex:1 1 auto}
.issue-head h2{margin:var(--space-3) 0 var(--space-1);font-size:var(--fs-section);line-height:var(--lh-section);font-weight:700;overflow-wrap:anywhere}
.issue-head .facts{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--space-1);color:var(--color-text-secondary)}
.issue-head .ui-notice{margin-top:var(--space-3)}
.issue .cols{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-6);align-items:start}
.issue .main{min-width:0;display:flex;flex-direction:column;gap:var(--space-5)}
.issue .side.ui-panel{min-width:0;display:flex;flex-direction:column;gap:var(--space-4);background:var(--color-bg-subtle)}
.issue .side>*+*{border-top:1px solid var(--color-border-default);padding-top:var(--space-4)}
@media (max-width:899.98px){
.issue .cols{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-4)}
.issue .main{display:contents}
.issue .side.ui-panel{display:contents}
/* на узком экране разделы правой колонки — отдельные панели, заметки идут первыми */
.issue .side>*{background:var(--color-bg-subtle);border:1px solid var(--color-border-default);border-radius:var(--radius-xl);padding:var(--space-4);min-width:0}
.issue .side>*+*{border-top:1px solid var(--color-border-default);padding-top:var(--space-4)}
.issue .side .note{order:-1}
.issue .side .other{order:1}
.issue .side .commands{order:2}
}
.issue section,.issue form{margin:0}
.issue h3{margin:0;font-size:var(--fs-lg);line-height:var(--lh-lg);font-weight:600;color:var(--color-text-primary)}
.issue .sec-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:var(--control-h);margin-bottom:var(--space-2)}
.issue .sec-head .ui-btn--ghost{padding:0 var(--space-2);margin-right:calc(-1*var(--space-2))}
.issue .sec-head .ui-btn--secondary{padding:0 var(--space-3)}
.issue .more{padding:0 var(--space-2);margin-left:calc(-1*var(--space-2))}
.issue .links-sec>h3{margin-bottom:var(--space-2)}
.issue .group{margin:0 0 var(--space-3)}
.issue .group:last-child{margin-bottom:0}
.issue .group h4{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:600;margin:0 0 var(--space-1);color:var(--color-text-secondary)}
.issue .links{list-style:none;margin:0;padding:0}
.issue .links li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding:var(--space-1) 0}
.issue .links li>a{font-family:var(--font-mono);font-size:13px;text-decoration:none}
.issue .links li>a:hover{text-decoration:underline}
.issue .links .tag{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--color-text-secondary);min-width:76px}
.issue .links .sum{flex:1 1 200px;min-width:0;overflow-wrap:anywhere}
.issue .links .absent{color:var(--color-text-secondary);font-style:italic}
.issue .description{background:var(--color-bg-subtle);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-3);margin:0 0 var(--space-1);line-height:1.5;overflow-wrap:anywhere}
.issue pre.description{white-space:pre-wrap;font:inherit;line-height:1.5}
.issue pre.description.clamped{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden;
/* нижний отступ — рамкой цвета фона: overflow обрезает по краю padding, и в нижнем padding была видна 9-я строка */
padding-bottom:0;border-bottom:var(--space-3) solid var(--color-bg-subtle);box-shadow:0 1px 0 var(--color-border-default)}
.issue div.description.clamped{max-height:12em;overflow:hidden;
/* рендер: блочное содержимое line-clamp не режет — ограничение высотой ≈ 8 строк (line-height 1.5, design #8, R-5) */
padding-bottom:0;border-bottom:var(--space-3) solid var(--color-bg-subtle);box-shadow:0 1px 0 var(--color-border-default)}
.issue .comments>ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.issue .comments>ul>li{padding:var(--space-3) 0;border-top:1px solid var(--color-border-default)}
.issue .comments>ul>li:first-child{border-top:0;padding-top:0}
.issue .comments .c-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:var(--control-h);font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--color-text-secondary)}
.issue .comments .c-head .ui-btn{padding:0 var(--space-2);margin-right:calc(-1*var(--space-2));font-size:var(--fs-caption)}
.issue .comments pre.body{white-space:pre-wrap;font:inherit;margin:0;overflow-wrap:anywhere}
.issue .fields{display:grid;grid-template-columns:1fr;gap:var(--space-3);margin:0}
.issue .fields dt{font-size:var(--fs-caption);line-height:var(--lh-caption);color:var(--color-text-secondary)}
.issue .fields dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.issue .other>h3{margin-bottom:var(--space-2)}
.issue .commands>h3{margin-bottom:var(--space-2)}
.issue .commands summary{cursor:pointer;font-size:var(--fs-lg);line-height:var(--lh-lg);font-weight:600;border-radius:var(--radius-xs)}
.issue .commands summary:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}
.issue .cmd-wrap{margin-top:var(--space-2);overflow-x:auto}
.issue .commands table{border-collapse:collapse;font-size:var(--fs-caption);line-height:var(--lh-caption);width:100%}
.issue .commands th{text-align:left;font-weight:600;color:var(--color-text-secondary);white-space:nowrap}
.issue .commands th,.issue .commands td{padding:var(--space-1) var(--space-2) var(--space-1) 0;border-bottom:1px solid var(--color-border-default);vertical-align:top}
/* служебные заметки (design 20) */
.note{display:flex;flex-direction:column;gap:var(--space-3)}
.note fieldset{display:flex;flex-direction:column;gap:var(--space-3);border:0;margin:0;padding:0;min-width:0}
.note .row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}
.note .note-confirm{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);font-size:var(--fs-body);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);background:var(--color-bg-surface)}
.note.view .hint{margin-top:var(--space-3);font-size:var(--fs-caption);line-height:var(--lh-caption)}
/* окно карточки задачи (design 13): размер и рамка — Dialog size="lg"; прокрутка и шапка — здесь */
.ui-dialog.issue-modal{padding:0}
.issue-modal > .issue{padding:0 var(--space-6) var(--space-6)}
@media (max-width:700px){
.issue-modal > .issue{padding:0 var(--space-4) var(--space-4)}
/* узкий экран: шапка не липкая, «Закрыть» остаётся справа в первой строке, «Открыть в Jira» уходит во вторую */
.issue-head{position:static;padding-top:var(--space-4)}
.issue-head .spacer{order:1}
.issue-head .ui-icon-btn{order:2}
.issue-head a.ui-btn{order:3}
}
.issue .ui-notice__text{font-size:var(--fs-body);line-height:var(--lh-body)}