@font-face{font-family:Golos;src:url(assets/GolosText-Regular.ttf);font-display:swap}
@font-face{font-family:Golos;src:url(assets/GolosText-SemiBold.ttf);font-weight:600;font-display:swap}
@font-face{font-family:Prata;src:url(assets/Prata.ttf);font-display:swap}
:root{--bg:#0b0e11;--panel:#12171c;--panel2:#171d23;--line:#2a333b;--text:#f2f3f5;--muted:#a9b3bc;--accent:#d6aa7a;--ink:#172027;
--ok:#3fa57a;--warn:#e0a24a;--bad:#d46a6a;--info:#6aa6e0;--ease:cubic-bezier(.23,1,.32,1);--safe:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 Golos,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3,p{margin:0}h1{font:400 26px/1.25 Prata,serif}h2{font-size:17px;font-weight:600}h3{font-size:14px;font-weight:600}
.muted{color:var(--muted)}.small{font-size:12px}.row{display:flex;gap:10px;align-items:center}.grow{flex:1;min-width:0}
button,input,select,textarea{font:inherit;color:inherit}
button{min-height:40px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:transparent;cursor:pointer;transition:transform .16s var(--ease),border-color .16s,background .16s}
button:active{transform:scale(.97)}button:disabled{opacity:.4;cursor:default;transform:none}
@media (hover:hover) and (pointer:fine){button:hover:not(:disabled){border-color:var(--accent)}}
button.primary{background:var(--accent);border-color:var(--accent);color:var(--ink);font-weight:600}
button.ghost{border-color:transparent;color:var(--muted)}button.danger{border-color:#6b3a3a;color:#f0b4b4}
:focus-visible{outline:2px solid var(--info);outline-offset:2px}
input,select,textarea{width:100%;min-height:40px;padding:8px 12px;background:var(--panel);border:1px solid var(--line);border-radius:8px}
textarea{resize:vertical;min-height:80px}label{display:block;margin:12px 0 4px;color:var(--muted);font-size:12px}
.top{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:5}
.brand{font:400 21px Prata,serif;cursor:pointer;white-space:nowrap;color:inherit;text-decoration:none}.who{color:var(--muted);font-size:12px}
.page{max-width:1000px;margin:0 auto;padding:28px 20px 80px}
.login{max-width:380px;margin:12vh auto;padding:0 20px}.login .brand{font-size:30px;display:block;margin-bottom:6px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-top:20px}
.card{padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .16s,transform .16s var(--ease)}
.card:active{transform:scale(.985)}@media (hover:hover){.card:hover{border-color:var(--accent)}}
.bar{height:6px;border-radius:3px;background:#252d34;overflow:hidden;margin-top:10px}.bar i{display:block;height:100%;background:var(--ok);transition:width .3s var(--ease)}
.empty{padding:40px 20px;text-align:center;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}
/* кабинет */
.cab{display:grid;grid-template-columns:260px 1fr 320px;height:calc(100vh - 58px);height:calc(100dvh - 58px)}
.col{overflow:auto;border-right:1px solid var(--line);min-width:0}.col:last-child{border:0}
.head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.goal{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #1d252c;border-radius:0;padding:12px 16px;min-height:0}
.goal.on{background:#1a2128;box-shadow:inset 3px 0 var(--accent)}.goal small{display:block;color:var(--muted)}
.goal .t{display:flex;justify-content:space-between;gap:8px}
.cab-actions #exp{flex-basis:100%;white-space:normal}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;padding:14px 18px}
.ph{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;border:2px solid transparent;background:#0f1418;padding:0;min-height:0}
.ph img{width:100%;height:100%;object-fit:cover;display:block}.ph.on{border-color:var(--accent)}
.tag{position:absolute;left:6px;bottom:6px;padding:2px 7px;border-radius:5px;font-size:11px;background:rgba(11,14,17,.82)}
.s-approved{color:var(--ok)}.s-rejected{color:var(--bad)}.s-matched{color:var(--warn)}.s-unmatched,.s-duplicate{color:var(--info)}
.drop{margin:14px 18px 0;padding:18px;border:1px dashed var(--line);border-radius:12px;text-align:center;color:var(--muted);transition:border-color .16s,background .16s}
.drop.over{border-color:var(--accent);background:#1a2128}
.insp{padding:16px}.insp img{width:100%;border-radius:10px;background:#0f1418;display:block;margin-bottom:12px}
.kv{display:grid;grid-template-columns:100px 1fr;gap:4px 10px;margin:12px 0;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}
.status{display:inline-block;padding:2px 9px;border-radius:6px;background:#1c242b;font-size:12px}
.modal{position:fixed;inset:0;background:rgba(5,7,9,.7);display:grid;place-items:center;z-index:20;padding:16px;animation:fade .16s var(--ease)}
.sheet{width:min(560px,100%);max-height:90vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;animation:rise .2s var(--ease)}
@keyframes fade{from{opacity:0}}@keyframes rise{from{opacity:0;transform:translateY(8px) scale(.98)}}
.item{padding:10px 0;border-bottom:1px solid #1d252c}.item:last-child{border:0}
.notice{padding:10px 12px;border-left:3px solid var(--warn);background:#221d14;border-radius:4px;margin:10px 0}
.back{display:none}
#toasts{position:fixed;left:50%;bottom:calc(18px + var(--safe));transform:translateX(-50%);z-index:30;display:grid;gap:8px}
.toast{padding:10px 16px;border-radius:10px;background:#1d252c;border:1px solid var(--line);animation:rise .2s var(--ease)}
.toast.bad{border-color:#6b3a3a}
@media (max-width:900px){
 .cab{display:block;height:auto}.col{border:0;overflow:visible}.back{display:inline-flex;align-items:center}
 .pane-goals .col:not(.c1),.pane-photos .col:not(.c2),.pane-insp .col:not(.c3){display:none}
 .top{padding:10px 14px}.page{padding:20px 14px 80px}.grid{grid-template-columns:repeat(3,1fr);gap:6px;padding:12px}
 .sheet{border-radius:14px 14px 0 0;align-self:end;max-height:92vh}.modal{place-items:end center;padding:0}
}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}}

.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.goal .t>span:first-child{overflow-wrap:anywhere;min-width:0}.goal .t>span:last-child{flex-shrink:0;font-variant-numeric:tabular-nums}
.card h2{overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.top button{flex-shrink:0}.status{flex-shrink:0;white-space:nowrap}
.insp h3{overflow-wrap:anywhere}.kv dd{overflow-wrap:anywhere}.notice{overflow-wrap:anywhere}

.mark{width:30px;height:30px;vertical-align:-7px;margin-right:9px}.login .mark{width:38px;height:38px;vertical-align:-9px}

/* мобильная база: нативное ощущение на телефоне */
html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior:none}
input,textarea,select{font-size:16px}
button,a,[role=button],.card,.ph,.goal{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.col{overscroll-behavior:contain}.sheet{overscroll-behavior:contain;padding-bottom:calc(20px + var(--safe))}
.top{padding-top:calc(12px + env(safe-area-inset-top,0px));padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
.page,.login{padding-bottom:calc(80px + var(--safe))}
@media (max-width:900px){.top{padding-left:max(14px,env(safe-area-inset-left,0px));padding-right:max(14px,env(safe-area-inset-right,0px))}}
/* появление плиток: короткий каскад, только при загрузке, не мешает работе */
.grid .ph{animation:tile .24s var(--ease) both}.grid .ph:nth-child(-n+12){animation-delay:calc(var(--i,0)*28ms)}
@keyframes tile{from{opacity:0;transform:translateY(6px) scale(.98)}}
.modal.out{animation:fadeout .12s var(--ease) forwards}.modal.out .sheet{animation:sink .12s var(--ease) forwards}
@keyframes fadeout{to{opacity:0}}@keyframes sink{to{opacity:0;transform:translateY(6px) scale(.98)}}
.skeleton{background:linear-gradient(90deg,#12171c 0,#1a2128 50%,#12171c 100%);background-size:200% 100%;animation:sk 1.2s linear infinite;border-radius:10px}
@keyframes sk{to{background-position:-200% 0}}

/* доступность: граница полей 3:1, цели касания 44px, видимый фокус */
input,select,textarea{border-color:#6b7883}
@media (pointer:coarse){button,select,input{min-height:44px}.goal{min-height:48px}}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.card:focus-visible,.ph:focus-visible{outline:2px solid #8ab8e8;outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Итерация 3: состав комплекта и понятная выгрузка, длинные названия из ТЗ */
.export-section{margin-top:18px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.notice-ok{border-color:var(--ok);background:#14221b}
.check-notes{margin:8px 0;padding-left:20px}.check-notes li+li{margin-top:5px}
.dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:18px}
.checkline{display:flex;align-items:flex-start;gap:10px;margin-top:16px;color:var(--text);font-size:14px}
.checkline input{width:20px;height:20px;min-height:20px;flex-shrink:0;margin:2px 0;accent-color:var(--accent)}
.doc-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}
.doc-heading h3,.file-name{overflow-wrap:anywhere}.file-name{color:var(--muted);font-size:12px;margin-top:4px}
.doc-item>.notice{grid-column:1/-1}.doc-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.package-setup{margin-top:18px;padding:14px;border:1px solid var(--line);border-radius:10px}
.package-setup summary{cursor:pointer;font-weight:600;min-height:28px}.package-setup button{margin-top:10px;white-space:normal;text-align:left}
.setup-alternative{margin-top:20px;padding-top:4px;border-top:1px solid var(--line)}
.sheet{max-height:90dvh}.sheet button{overflow-wrap:anywhere}#toasts{max-width:calc(100vw - 24px);width:max-content}.toast{overflow-wrap:anywhere}
@media(max-width:600px){.doc-item{grid-template-columns:minmax(0,1fr)}.doc-actions{justify-content:flex-start}.dialog-actions{justify-content:stretch}.dialog-actions button{flex:1 1 130px}.sheet{max-height:92dvh}.package-setup{padding:12px}.package-setup button{width:100%}}

.export-section .item h3{overflow-wrap:anywhere}

/* Свои шаблоны: названия файлов и полей сохраняются полностью */
.template-summary{margin:16px 0;padding:14px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;overflow-wrap:anywhere}
.template-summary button{margin-top:10px}.template-summary summary{color:var(--muted);font-size:12px;cursor:pointer}
.template-fields,.template-export{margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}
.template-fields>p,.template-export>p{margin-top:6px}.template-map-list{margin-top:8px}
.template-map-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.template-map-row label{margin:0;color:var(--text);overflow-wrap:anywhere}.template-map-row select{min-width:0;width:100%}
.template-reset{margin-top:20px}.template-reset summary{cursor:pointer;color:var(--muted)}.template-reset button{margin-top:10px}
#template-file{padding:8px;min-width:0;overflow:hidden}#template-file::file-selector-button{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:6px 8px;margin-right:8px;font:inherit}
@media(max-width:600px){.template-map-row{grid-template-columns:minmax(0,1fr);gap:6px}.template-summary{padding:12px}}
:where(.project-time){padding:8px 16px 14px;overflow-wrap:anywhere}
:where(.project-time button){margin-top:6px}
#tz-impact label{margin-top:12px;min-height:44px;align-items:center}
[hidden]{display:none!important}
.goal-preview-list{max-height:280px;overflow:auto;margin:12px 0;overflow-wrap:anywhere}
.goal-preview-list section,.goal-remark{padding:12px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.goal-remark button{margin-top:8px}
.shoot-brief{margin:14px 18px 0;padding:14px;border:1px solid var(--line);border-radius:10px;overflow-wrap:anywhere}
.shoot-brief p{margin-top:6px;white-space:pre-wrap}.shoot-brief button{margin-top:8px}
.example-preview{display:block;width:100%;max-height:60dvh;object-fit:contain;margin:14px 0;border-radius:8px}
.mini{--safe:max(env(safe-area-inset-bottom,0px),var(--mini-bottom,0px))}
.mini .top{padding-top:calc(10px + max(env(safe-area-inset-top,0px),var(--mini-top,0px)));padding-left:max(14px,var(--mini-left,0px));padding-right:max(14px,var(--mini-right,0px))}
.mini .sheet{max-height:min(92dvh,calc(var(--mini-height,100dvh) - var(--mini-top,0px) - 10px))}
.mini .top .brand{font-size:16px}.mini .top .mark{width:22px;height:22px;vertical-align:-5px}
.mini-light .goal.on,.mini-light .drop.over{background:#e7edf2}
.mini-light .goal,.mini-light .item{border-color:var(--line)}
.mini-light .notice{background:#fff4de}.mini-light .notice-ok{background:#e4f3eb}
.mini-light .status{background:#e7edf2}.mini-light .tag{background:#f5f6f7ee}
.mini-light .toast{background:#ffffff;border-color:var(--line)}.mini-light .toast.bad{border-color:var(--bad)}
.mini-light button.danger{color:var(--bad);border-color:var(--bad)}
