:root{color-scheme:light;--ink:#292c30;--muted:#686d73;--accent:#d71920;--line:#d9dcdf;--paper:#eceeef;--surface:#f7f7f8;--green:#3c634f;--red:#ba1922;--orange:#8d6314}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 0 0,#10223780,transparent 55%),radial-gradient(ellipse at 100% 40%,#2b13294d,transparent 50%),var(--paper);background-attachment:fixed;color:var(--ink);font:16px -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;line-height:1.45}button,input,select,textarea{font:inherit}button,.filebutton{border:1px solid var(--line);background:#f4f5f6;color:var(--ink);border-radius:14px;padding:12px 17px;cursor:pointer;transition:background .16s,border-color .16s;text-decoration:none;display:inline-block}button:hover,.filebutton:hover{background:#e6e8ea;border-color:#b9bec4}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button,input,select,textarea{-webkit-tap-highlight-color:transparent}header{max-width:1040px;margin:auto;padding:28px 28px 0;display:flex;align-items:center;justify-content:space-between}.brand{color:var(--ink);text-decoration:none;display:flex;gap:12px;align-items:center;font-weight:700;font-size:17px}.brand small{font-size:11px;font-weight:400;display:block;color:var(--muted);margin-top:2px}.brandmark{display:grid;place-items:center;background:#d71920;border:1px solid #d71920;border-radius:14px;width:43px;height:43px;color:var(--accent);font-size:23px}.badge{font-size:11px;border:1px solid var(--line);padding:7px 12px;border-radius:30px;color:var(--muted)}main{max-width:1040px;padding:0 28px 140px;margin:auto}.intro{padding:28px 0 12px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;color:var(--muted)}h1{font-size:clamp(27px,4vw,38px);letter-spacing:-1px;line-height:1.15;margin:9px 0}h2{font-size:22px;line-height:1.25;letter-spacing:-.5px;margin:0}h3{font-size:18px;margin:0 0 10px}.intro p{color:var(--muted);font-size:13px;margin:8px 0}.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:650}.primary:hover{background:#b9141b}.full{width:100%}.muted{color:var(--muted);font-size:14px}.textbutton{background:transparent;border:0;color:var(--accent);padding:8px 0;font-size:13px}.textbutton:hover{background:transparent}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:22px 0 16px}.toolbar h2{font-size:19px}.timebasis{display:flex;flex-wrap:wrap;gap:3px 15px;font-size:11px;margin:0 0 18px;color:var(--muted)}.timebasis strong{font-weight:500;color:#454a50}.timebasis small{display:block;width:100%;font-size:11px}.summarypanel,.panel,.trip,.documentcard{background:linear-gradient(125deg,#ffffff,#f7f8f9);border:1px solid #d3d7db;border-radius:25px;box-shadow:inset 0 1px 0 #e8eaed,0 10px 30px #00000012}.summarypanel{padding:20px}.summaryheading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.summaryheading h2{font-size:24px}.summaryheading p{font-size:13px;color:var(--muted);margin:5px 0 0}.summaryicon{display:grid;place-items:center;font-size:29px;width:42px;height:42px;background:#138cff;color:#092748;border-radius:50%}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric{border-radius:20px;padding:19px 20px}.metric span{display:block;color:#61666d;font-size:14px}.metric strong{display:block;margin:6px 0;font-size:clamp(23px,3.5vw,34px);line-height:1.15;font-weight:700;letter-spacing:-.8px}.metric small{display:block;font-size:11px;color:#747980}.tone-norm{background:#e8eaed}.tone-norm strong{color:#d71920}.tone-work{background:#fce8e8}.tone-work strong{color:var(--green)}.tone-holiday{background:#e8eaed}.tone-holiday strong{color:var(--orange)}.tone-night{background:#e8eaed}.tone-night strong{color:#43474d}.moremetrics{grid-column:1/-1;margin-top:4px}.moremetrics summary,.tripdetails summary{display:flex;justify-content:space-between;align-items:center;list-style:none;cursor:pointer;color:var(--muted);font-size:12px;padding:10px 0}.moremetrics summary::-webkit-details-marker,.tripdetails summary::-webkit-details-marker{display:none}.moremetrics[open] summary span,.tripdetails[open] summary span{transform:rotate(180deg)}.metricextras{display:grid;grid-template-columns:1fr 1fr;gap:15px;padding:12px 0}.metricextras span,.metricextras small{display:block;font-size:11px;color:var(--muted)}.metricextras strong{font-size:19px;display:block;margin:4px 0}.quicklinks{display:flex;gap:10px;margin:16px 0 28px}.quicklinks button{flex:1;padding:13px 8px;border-radius:30px;font-size:13px;background:#f8f8f9;border-color:#d3d7db}.quicklinks button:first-child{border-color:#d3d7db}.countbadge{display:inline-block;margin-left:6px;min-width:26px;text-align:center;border-radius:20px;background:#e1e4e7;padding:3px 8px;font-size:12px;font-weight:400;color:var(--muted)}.trip{padding:22px;margin:14px 0;overflow:hidden}.tripheading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.trip h3{font-size:21px;letter-spacing:-.3px;margin:0 0 4px;overflow-wrap:anywhere}.routearrow{font-weight:400;color:var(--muted);padding:0 3px}.trip p{font-size:13px;color:var(--muted);white-space:pre-wrap;margin:7px 0;overflow-wrap:anywhere}.tripedit{border:0;background:transparent;color:var(--muted);padding:5px 10px;font-size:21px}.triptimegrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:24px 0 9px}.triptimegrid>div{padding:0 15px;border-left:1px solid var(--line)}.triptimegrid>div:first-child{border:0;padding-left:0}.triptimegrid>div:last-child{padding-right:0}.triptimegrid span{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.triptimegrid strong{display:block;font-size:17px;font-variant-numeric:tabular-nums}.starttime{color:var(--green)}.endtime{color:var(--red)}.worktime{color:var(--accent)}.tripdetails{border-top:1px solid var(--line);margin-top:18px;padding-top:2px}.tripdetails .actions{margin-top:18px}.actions{display:flex;flex-wrap:wrap;gap:8px}.actions button{font-size:12px;padding:10px 13px}.dangerbutton{color:var(--red)}.empty{text-align:center;padding:45px 22px;background:#f7f8f9;border:1px dashed #cbd0d5;border-radius:25px}.empty .symbol{font-size:40px;color:var(--accent)}.empty h3{margin:10px 0}.empty p{font-size:14px;color:var(--muted)}.note{font-size:12px;line-height:1.65;color:var(--muted);margin:24px 0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}label{display:block;font-size:12px;color:#555b63;font-weight:500}input,select,textarea{display:block;width:100%;min-width:0;padding:12px;border:1px solid #d3d7db;border-radius:12px;background:#fff;color:var(--ink);font-size:16px;margin-top:7px;outline:0}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input[type=month]{width:auto;max-width:190px;margin:0;font-size:13px;padding:10px}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#7f858d}.panel{padding:24px;margin:18px 0}.panel p{font-size:14px;line-height:1.6}.panel h2{margin:10px 0}.panel h3{margin-top:0}.tag{font-size:10px;font-weight:650;letter-spacing:.8px;color:var(--accent)}.sectionheading{padding:15px 0 8px}.sectionheading h2{font-size:30px;margin-top:7px}.sectionheading p{margin-bottom:0}.row{display:flex;justify-content:space-between;gap:14px;padding:16px 0;border-bottom:1px solid var(--line);font-size:14px}.row strong{text-align:right}progress{width:100%;height:9px;accent-color:var(--accent)}footer{display:flex;justify-content:space-between;font-size:10px;color:#747980;letter-spacing:.5px;padding:28px 0;margin-top:30px;border-top:1px solid var(--line)}
.dock{position:fixed;z-index:20;bottom:max(16px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:10px;width:min(610px,calc(100% - 24px));align-items:center}.dock nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));flex:1;padding:6px;background:#f8f9faf5;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid #ccd0d5;border-radius:45px;box-shadow:0 8px 24px #0006;min-width:0}.dock nav button{border:0;background:transparent;border-radius:40px;font-size:10px;color:#6a7077;display:flex;align-items:center;flex-direction:column;gap:2px;padding:7px 2px;min-width:0}.dock nav button>span{font-size:26px;line-height:29px;font-weight:400}.dock nav button.active{background:#fce5e6;color:var(--accent);font-weight:700}.dockadd{flex-shrink:0;width:68px;height:68px;border-radius:50%;font-size:35px;line-height:1;padding:0;background:#d71920;border-color:#b9bec4;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);font-weight:400}.dockadd:hover{background:#ba1118}dialog{max-width:680px;width:calc(100% - 24px);max-height:90dvh;overflow:auto;background:linear-gradient(145deg,#f5f6f7,#eceef0 50%,#f8f9fa);border:1px solid #d3d7db;border-radius:28px;color:var(--ink);padding:26px;box-shadow:0 25px 90px #0009}dialog::backdrop{background:#000a;backdrop-filter:blur(5px)}dialog .toolbar{margin:0 0 25px}dialog .toolbar h2{font-size:24px}dialog label{margin-bottom:12px}dialog .toolbar>button{border:0;border-radius:50%;padding:7px 12px;font-size:20px}dialog .note{background:#e8eaed;padding:15px;border-radius:16px}#formerror,#energyerror,#traininfoerror,#passengererror{color:var(--red);font-size:13px}#toast{position:fixed;z-index:100;bottom:110px;left:50%;transform:translateX(-50%);background:#303236;color:#fff;border-radius:16px;padding:13px 20px;display:none;max-width:90vw;box-shadow:0 8px 30px #0007;font-size:14px}#locofavorites button[aria-pressed=true]{background:#fce8e8;border-color:#d71920;color:#a81219}.customloco{margin-top:20px;align-items:center}.customloco input{max-width:260px;margin:0}.energysection{border:1px solid var(--line);border-radius:20px;padding:17px;margin:14px 0;background:#f3f4f5}.energysection .toolbar{margin:0 0 12px}.energysection .toolbar label{flex:1}.energycard,.traininfocard,.monthsplit{background:#e8eaed;border-radius:12px;padding:13px;margin:13px 0;border:1px solid #dfe2e5}.energycard strong,.traininfocard strong{font-size:13px;color:#43484e}.monthsplit{border-left:3px solid var(--accent);font-size:12px}.monthsplit .currentpart{color:#b4131b}.restbadge{font-size:12px;border-radius:12px;padding:11px 13px;margin:12px 0;line-height:1.5}.restshort{background:#fce6e6;color:#a9131a}.restok{background:#e9eeeb;color:#41604e}.calendarrest{border:1px solid var(--line);border-radius:15px;padding:15px;margin-top:16px;font-size:14px}.calendarrest p{margin:7px 0 0;font-size:13px}.warningtext{color:var(--red)}.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-top:24px}.weekday{text-align:center;font-size:12px;color:var(--muted);padding:7px}.calday{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;min-height:113px;padding:9px 3px;border-radius:14px}.calday .caldate{font-size:14px;align-self:flex-start;padding-left:5px;font-weight:500}.dutyletters{min-height:30px;display:flex;align-items:center;font-size:25px;font-weight:750}.letter-trip{color:var(--accent)}.letter-off{color:#70777e}.calday.duty-trip{background:#fae6e7;border-color:#e4b4b7}.calday.duty-off{background:#f3f4f5}.calday.holiday .caldate{color:var(--red)}.calday.transfer .caldate{color:var(--orange)}.calday.today{outline:2px solid var(--accent);outline-offset:1px}.calday small{font-size:9px;min-height:14px;color:var(--muted)}.dayhours{font-size:11px;font-weight:600;white-space:nowrap}.calday.restwarning{border-color:var(--red)}.restmark{position:absolute;top:5px;right:5px;width:16px;height:16px;line-height:16px;border-radius:50%;background:#c41a24;color:#fff;font-size:11px}.legend{display:flex;flex-wrap:wrap;gap:10px 18px;font-size:11px;color:var(--muted);margin-top:20px}.dayroute{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.source{color:var(--accent);font-size:12px}.documentupload{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:28px}.documentheroicon{display:grid;place-items:center;width:52px;height:58px;border-radius:15px;background:#fbe4e5;color:var(--accent);font-size:32px;margin-bottom:17px}.documentupload h3{font-size:22px;margin-bottom:5px}.documentupload p{margin:0}.documentupload button{flex-shrink:0}.documenttools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:24px 0 10px}.documentsearch{flex:1;min-width:180px}.documentsearch input{margin:0;background:#fff;border-radius:15px}.documentsort select{margin:0;font-size:13px;background:#fff;padding:13px 10px}.documenttools button{font-size:13px}.documenttools button[aria-pressed=true]{border-color:var(--orange);color:var(--orange);background:#fbe4e5}.documentcard{display:flex;align-items:center;gap:15px;padding:17px 20px;margin:10px 0;border-radius:21px}.documentopen{display:flex;align-items:center;gap:16px;flex:1;min-width:0;text-align:left;border:0;background:transparent;padding:0;border-radius:8px}.documentopen:hover{background:transparent}.fileicon{display:grid;place-items:center;width:45px;height:54px;border:1px solid #d6dade;border-radius:12px;background:#eef0f2;color:#555d66;font-size:10px;font-weight:800;flex-shrink:0}.fileicon.pdf{color:#bd1720;background:#fae5e6;border-color:#e9c2c4}.fileicon.image{color:#5f6975;background:#eceef0;border-color:#d1d6dc}.filename{display:block;font-size:15px;font-weight:600;overflow-wrap:anywhere}.filemeta{display:block;font-size:11px;color:var(--muted);margin-top:5px}.documentactions{display:flex;gap:4px;flex-shrink:0}.documentactions button{background:transparent;border:0;padding:10px 8px;font-size:21px;color:var(--muted)}.documentactions button[aria-pressed=true]{color:var(--orange)}.documentactions .deletedoc{font-size:16px}.documenttext{min-width:0}.viewerheading{min-width:0}.viewerheading h2{overflow-wrap:anywhere;font-size:19px!important;margin-top:4px}#documentviewer{width:calc(100% - 16px);max-width:1100px;height:91dvh;display:none;flex-direction:column}#documentviewer[open]{display:flex}#documentviewer .toolbar{flex-shrink:0;margin-bottom:14px}.vieweractions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.vieweractions a{font-size:12px;padding:9px 13px}#documentpreview{flex:1;min-height:180px;overflow:auto;border-radius:15px;background:#e4e6e9;display:flex;align-items:stretch;justify-content:center}#documentpreview iframe{border:0;display:block;width:100%;height:100%;min-height:45dvh;background:#fff}#documentpreview img{width:100%;height:auto;object-fit:contain;align-self:flex-start}#documentpreview pre{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.7 ui-monospace,monospace;margin:0;padding:20px;width:100%}.documentfallback{align-self:center;text-align:center;padding:35px;color:var(--muted)}#documentviewhint{font-size:12px;margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}
@media(min-width:900px){.intro{padding-top:38px}#trips{display:grid;grid-template-columns:1fr 1fr;gap:15px;align-items:start}.trip{margin:0}.trip h3{font-size:19px}.triptimegrid strong{font-size:14px}.triptimegrid>div{padding:0 10px}#trips>.empty{grid-column:1/-1}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{padding:18px}.metric strong{font-size:25px}.metricextras{grid-template-columns:repeat(4,1fr)}}
@media(max-width:640px){header{padding:18px 16px 0}main{padding:0 14px 125px}.intro{padding:25px 3px 8px}.badge{font-size:10px}.brand{font-size:15px}.brand small{font-size:10px}.brandmark{width:37px;height:37px}.toolbar{gap:8px}.toolbar h2{font-size:17px}.summarypanel{padding:15px;border-radius:23px}.summaryheading{margin-bottom:14px}.summaryheading h2{font-size:22px}.metrics{gap:9px}.metric{padding:15px 12px;border-radius:18px}.metric span{font-size:12px}.metric strong{font-size:25px;letter-spacing:-.5px}.metric small{font-size:10px}.trip{padding:17px;border-radius:23px}.trip h3{font-size:20px}.triptimegrid{margin-top:23px}.triptimegrid>div{padding:0 9px}.triptimegrid strong{font-size:13px}.triptimegrid span{font-size:10px}.tripdetails summary{font-size:11px}.panel{padding:19px;border-radius:23px}.grid{grid-template-columns:1fr 1fr;gap:12px}.grid label{font-size:11px}dialog{padding:21px 17px;border-radius:26px;max-height:92dvh}dialog .toolbar h2{font-size:23px}dialog .grid{grid-template-columns:1fr 1fr}dialog input,dialog select{font-size:16px;padding:11px 8px}dialog .note{font-size:11px}footer{font-size:9px;letter-spacing:0}.calgrid{gap:4px}#calendar .panel{padding:13px}.calday{min-height:99px;border-radius:10px;gap:3px;padding-left:1px;padding-right:1px}.calday .caldate{font-size:12px;padding-left:3px}.dutyletters{font-size:21px;min-height:26px}.calday small{font-size:8px}.dayhours{font-size:9px}.restmark{width:13px;height:13px;line-height:13px;right:2px;font-size:9px}.documentupload{display:block;padding:24px}.documentupload button{width:100%;margin-top:23px}.documenttools{gap:8px}.documentsearch{flex-basis:100%}.documentsort{flex:1}.documenttools button{flex:1}.documentcard{padding:15px 12px;gap:5px}.documentopen{gap:11px}.filename{font-size:14px}.fileicon{width:36px;height:45px;font-size:9px}.filemeta{font-size:10px}.documentactions button{padding:9px 7px}.dock{gap:7px;width:calc(100% - 20px)}.dock nav{padding:5px}.dock nav button{font-size:9px;padding:6px 0}.dock nav button>span{font-size:25px}.dockadd{width:60px;height:60px}.quicklinks button{font-size:12px}}
@media(max-width:360px){.metric strong{font-size:22px}.triptimegrid strong{font-size:12px}.triptimegrid span{font-size:9px}.dock nav button{font-size:8px}.dockadd{width:52px;height:52px}input[type=month]{max-width:150px}.grid,dialog .grid{grid-template-columns:1fr}.dayhours{font-size:8px}.trip h3{font-size:18px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.dock nav svg{display:block;width:25px;height:27px}.metric strong{font-variant-numeric:tabular-nums}.metric small{overflow-wrap:anywhere}

/* EMM: compact railway log, red / graphite / silver. */
body{background:#eceeef;background-attachment:initial;color:#292c30}
header{max-width:none;margin:0;background:#303236;border-bottom:4px solid #d71920;padding:15px max(20px,calc((100vw - 1000px)/2));min-height:80px}
.brand{color:#fff;font-size:17px;line-height:1.2;letter-spacing:.1px;gap:16px}.brand small{color:#c4c7cb;font-size:14px;font-weight:500;margin-top:4px}.emmlogo{display:block;width:100px;height:48px;flex-shrink:0}.badge{color:#c4c7cb;border-color:#5a5d62;border-radius:3px;font-size:10px;letter-spacing:.7px}
main{max-width:1040px;padding:0 20px 100px}h1{font-size:25px;letter-spacing:-.5px;margin:0}h2{font-size:20px}h3{font-size:17px}.toolbar{margin:18px 0 12px}.toolbar h2{font-size:18px}.toolbar input[type=month]{background:#fff;border-radius:6px}
button,.filebutton,input,select,textarea{border-radius:7px}button,.filebutton{padding:10px 14px}.primary{background:#d71920;border-color:#d71920;color:#fff}.primary:hover{background:#b9141b}.tag,.textbutton,.source{color:#ba1720}
.summarypanel,.panel,.trip,.documentcard{border-radius:10px;background:#fafbfc;box-shadow:none;border-color:#d5d9dd}.summarypanel{padding:0;overflow:hidden;border-top:3px solid #d71920}.metrics{gap:0}.metric{border-radius:0;padding:15px 18px;background:#f1f2f4;border-right:1px solid #d9dcdf;border-bottom:1px solid #d9dcdf}.metric span{font-size:12px}.metric strong{font-size:28px;margin:5px 0;color:#303236}.metric small{font-size:10px}.tone-work{background:#d71920}.tone-work span,.tone-work strong,.tone-work small{color:#fff}.tone-holiday strong,.tone-night strong{color:#444b53}.moremetrics{margin:0;padding:0 16px;background:#fafbfc}.moremetrics summary{padding:10px 0;color:#5f666e}.metricextras{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:5px 0 14px}.metricextras strong{font-size:17px}
.quicklinks{margin:0;border:1px solid #d5d9dd;border-top:0;background:#e1e4e7;border-radius:0 0 6px 6px;display:block}.quicklinks button,.quicklinks button:first-child{border:0;border-radius:0;display:flex;align-items:center;justify-content:space-between;width:100%;padding:9px 16px;font-size:12px;color:#454b52;background:transparent}.quicklinks button:hover{background:#d7dade}
.accountinghelp{border-bottom:1px solid #d2d6da;padding:10px 1px;margin-bottom:10px;color:#697078;font-size:11px}.accountinghelp summary{cursor:pointer}.accountinghelp .timebasis{padding:10px 0 0;margin-bottom:0}.accountinghelp .note{margin:8px 0 4px;font-size:11px}
.trip{border-left:3px solid #777e85;padding:15px 17px;margin:10px 0}.trip h3{font-size:19px}.tripheading p{font-size:11px;margin:3px 0}.tripedit{padding:3px 9px}.triptimegrid{margin:16px 0 6px}.triptimegrid strong{font-size:15px}.triptimegrid span{font-size:11px;margin-bottom:3px}.starttime,.endtime{color:#4b535b}.worktime{color:#bc1720}.tripdetails{margin-top:12px}.tripdetails summary{font-size:11px;padding:8px 0}.tripdetails .actions{margin-top:12px}.actions button{padding:9px 11px}.empty{border-radius:10px;padding:26px 18px}.empty .symbol{font-size:28px;color:#ba1720}.empty p{margin:8px 0 15px}.note{margin:15px 0}.panel{padding:18px;margin:13px 0}.panel p{font-size:13px}.sectionheading{padding:18px 0 2px}.sectionheading h2{font-size:25px}.sectionheading p{font-size:12px;margin-top:5px}.row{padding:12px 0}
.dock{bottom:0;width:min(1040px,100%);background:#303236;border-top:3px solid #d71920;border-radius:0;gap:0;padding:5px 12px max(5px,env(safe-area-inset-bottom));box-shadow:0 -3px 12px #00000012}.dock nav{padding:0;background:none;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.dock nav button{border-radius:4px;color:#bfc4ca;font-size:10px;padding:6px 3px;gap:1px}.dock nav button.active{background:#45484d;color:#fff;box-shadow:inset 0 -2px #e92831}.dock nav button>span{line-height:24px}.dock nav svg{width:22px;height:24px}.dockadd{width:49px;height:45px;border-radius:6px;background:#d71920;border:0;margin-left:8px;font-size:30px;backdrop-filter:none;-webkit-backdrop-filter:none}.dockadd:hover{background:#b9141b}
dialog{background:#f0f2f4;border-radius:13px;padding:20px;border-color:#b9bec4;box-shadow:0 20px 60px #0006}dialog::backdrop{background:#202226b3;backdrop-filter:blur(2px)}dialog .toolbar{margin-bottom:18px}dialog .toolbar h2{font-size:22px}dialog .toolbar>button{border-radius:5px}dialog .note{padding:11px;border-radius:6px}.energysection{border-radius:8px;margin:10px 0;padding:13px}.energycard,.traininfocard,.monthsplit,.restbadge,.calendarrest{border-radius:6px}.timebasis{font-size:11px}.calday{border-radius:6px}.calday.duty-trip{background:#f9e5e6;border-color:#dbafb3}.letter-trip{color:#b91923}.calday.today{outline-color:#42484f}.calday.restwarning{border-color:#bd1720}.calday.duty-off{background:#e9ecee}.restmark{color:#fff}.calday small{color:#636a71}
.documentupload{padding:20px;gap:18px}.documentheroicon{width:35px;height:38px;border-radius:6px;font-size:24px;margin-bottom:8px}.documentupload h3{font-size:19px}.documentupload p{font-size:12px}.documenttools{margin:16px 0 8px}.documentsearch input{border-radius:7px}.documentcard{padding:12px 15px;border-radius:8px;margin:8px 0}.fileicon{border-radius:5px;width:36px;height:44px}.documentopen{gap:12px}.filename{font-size:14px}.documentactions button[aria-pressed=true]{color:#b91923}.documenttools button[aria-pressed=true]{color:#b91923;border-color:#c41a24}.vieweractions a{border-radius:6px}#documentpreview{border-radius:6px}#toast{bottom:90px;border-radius:7px}footer{margin-top:24px;padding:18px 0;gap:16px;color:#747a81}
@media(min-width:900px){#trips{gap:10px}.trip{margin:0}.metric{padding:16px 18px}.metric strong{font-size:29px}.triptimegrid strong{font-size:14px}}
@media(max-width:640px){header{padding:12px 14px;min-height:72px}.emmlogo{width:78px;height:auto}.brand{gap:10px;font-size:13px}.brand small{font-size:12px;margin-top:3px}.badge{display:none}main{padding:0 12px 94px}h1{font-size:23px}.toolbar{margin:15px 0 11px}.toolbar h2{font-size:16px}.metric{padding:12px 14px}.metric strong{font-size:25px}.metric span{font-size:11px}.metric small{font-size:9px}.moremetrics{padding:0 13px}.metricextras strong{font-size:14px}.metricextras span,.metricextras small{font-size:10px}.trip{padding:13px 12px}.trip h3{font-size:18px}.triptimegrid{margin-top:14px}.triptimegrid>div{padding:0 7px}.triptimegrid strong{font-size:12px}.triptimegrid span{font-size:9px}.panel{padding:16px}.dock{width:100%;gap:0;padding-left:8px;padding-right:8px}.dock nav button{font-size:9px}.dock nav svg{width:21px;height:23px}.dockadd{width:46px;height:43px}.documentupload{display:flex;align-items:center;padding:16px;flex-wrap:wrap}.documentupload button{width:auto;margin:0}.documentheroicon{display:none}.documentupload h3{font-size:17px}.documentcard{padding:11px}.fileicon{width:32px;height:40px}dialog{padding:17px 14px}#documentviewer{border-radius:10px}.sectionheading{padding-top:16px}.calday{min-height:91px}footer{font-size:9px}}
@media(max-width:360px){.brand{font-size:12px}.emmlogo{width:68px}.metric strong{font-size:23px}.metricextras strong{font-size:12px}.triptimegrid strong{font-size:11px}.dock nav button{font-size:8px}.dockadd{width:42px}.documentupload button{width:100%}}
/* Open routes: the closing action stays outside collapsed trip details. */
.openroutebanner{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #e7a9ad;border-left:4px solid #d71920;background:#fff2f2;padding:14px 16px;margin:0 0 14px;border-radius:8px}.openroutebanner strong{display:block;font-size:17px;overflow-wrap:anywhere}.openroutebanner p{font-size:12px;color:#6b5356;margin:5px 0 0}.openroutebanner button{flex-shrink:0}.openstatus{display:block;font-size:10px;letter-spacing:.6px;text-transform:uppercase;color:#b0151e;font-weight:750;margin-bottom:5px}.trip.trip-open{border-left-color:#d71920;border-top-color:#e7a9ad}.finishroutebutton{margin-top:10px;font-size:14px;padding:12px}.finishstart{padding:12px 14px;background:#e5e8eb;border-radius:6px;margin-bottom:18px}.finishstart span{display:block;font-size:12px;color:#616970}.finishstart strong{display:block;margin-top:4px;font-size:18px}#finishrouteerror{font-size:13px;color:#b0151e}#finishroutepreview .monthsplit{margin-bottom:0}#finishroutepreview h2{font-size:23px}@media(max-width:640px){.openroutebanner{display:block;padding:12px}.openroutebanner button{width:100%;margin-top:12px}.openroutebanner strong{font-size:16px}.dayhours{font-size:9px}}@media(max-width:360px){.dayhours{font-size:8px}}
.pzvroutebutton{display:block;width:100%;margin-top:9px;border:1px solid #c6cbd0;background:#e8ebee;color:#424950;text-align:left;font-size:12px;font-weight:650;padding:11px 13px}.pzvroutebutton:hover{border-color:#be1b24;background:#f9eded}.pzvremember{display:flex;align-items:center;gap:10px;margin-top:17px!important;line-height:1.4}.pzvremember input{width:18px;height:18px;margin:0;accent-color:#d71920;flex-shrink:0}.pzvresult{display:grid;grid-template-columns:1fr auto;gap:4px 14px;padding:11px 0;border-bottom:1px solid #d6d9dd;font-size:13px}.pzvresult small{grid-column:1/-1;color:#69717a;font-size:11px}#pzverror{color:#b0151e;font-size:13px}.emmlogo{width:112px;height:60px}@media(max-width:640px){.emmlogo{width:92px;height:49px}.brand{gap:8px}.pzvresult{font-size:12px}}
.pzvdate{display:block;margin-top:5px;color:#6c737a;font-size:11px;font-weight:400}.pzvtemplates{padding:14px!important}.pzvtemplates .grid{margin-top:13px}.pzvtemplateedit,.pzvdayoptions{margin:14px 0;font-size:12px;color:#59616a}.pzvtemplateedit summary,.pzvdayoptions summary{cursor:pointer;padding:6px 0}.pzvtemplateedit .actions{margin-top:12px}#pzvtemplateerror{color:#b0151e;font-size:12px}#pzvlegacy{font-size:11px;color:#747980;margin:12px 0}
/* Offline readiness and iPhone installation */
.offlinestrip{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 18px;font-size:12px;color:#65696f}.offlinestrip .textbutton{margin:0;white-space:nowrap;min-height:44px}.offlinestrip [data-ready="true"]:before{content:'●';color:#33745a;margin-right:7px}.offlinepanel h3{margin-top:12px}.installsteps{padding-left:24px;line-height:1.6}.installsteps li{margin-bottom:15px}#fullbackupstatus{overflow-wrap:anywhere}#installguide{max-width:560px}body{overscroll-behavior-y:contain}input,select,textarea{font-size:16px}@media(display-mode:standalone){header{padding-top:max(14px,env(safe-area-inset-top))}}
/* iPhone forms: prevent native date controls from widening grid tracks. */
.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid>*{min-width:0}dialog form,dialog label{min-width:0;max-width:100%}dialog input,dialog select,dialog textarea{max-width:100%;box-sizing:border-box}dialog input:not([type=checkbox]):not([type=hidden]),dialog select{min-height:48px}dialog input[type=datetime-local],dialog input[type=time]{width:100%;min-width:0;-webkit-appearance:none;appearance:none}dialog input::-webkit-date-and-time-value{text-align:left;min-height:1.5em}dialog .toolbar h2{min-width:0;overflow-wrap:anywhere}dialog .toolbar>button{flex:0 0 44px;min-height:44px}dialog{overscroll-behavior:contain;scroll-padding-block:16px}
@media(max-width:640px){
  dialog{position:fixed;inset:auto;top:calc(var(--emm-viewport-top,0px) + env(safe-area-inset-top,0px) + 8px);left:12px;right:12px;margin:0 auto;width:calc(100% - 24px);max-width:calc(100% - 24px);max-height:calc(100vh - 32px);max-height:calc(var(--emm-viewport-height,100dvh) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 16px);padding:16px;overflow-y:auto;border-radius:12px}
  dialog .grid{grid-template-columns:minmax(0,1fr);gap:8px}dialog .grid label{font-size:12px}dialog label{margin-bottom:8px}dialog .toolbar{gap:10px;margin-bottom:12px}dialog .toolbar h2{font-size:21px}dialog .note{margin:12px 0 16px}dialog input:not([type=checkbox]):not([type=hidden]),dialog select{height:48px;min-height:48px;padding:10px 12px;line-height:1.5}dialog textarea{padding:10px 12px}dialog .full{min-height:48px;white-space:normal}#documentviewer{width:calc(100% - 24px);height:calc(var(--emm-viewport-height,100dvh) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 16px)}
}
/* Selected calendar date stays visible after focus moves or live totals refresh. */
.calday.selected-day,.calday.selected-day:hover{outline:3px solid #d71920;outline-offset:-3px;border-color:#d71920;background:#ffeded;box-shadow:inset 0 0 0 1px #fff}.calday.selected-day .caldate{background:#d71920;color:#fff;border-radius:4px;padding:1px 5px}.calday.today:not(.selected-day){outline:1px dashed #626a73;outline-offset:-2px}.calday:focus-visible{outline:3px solid #d71920;outline-offset:-3px}.tripdetails>.pzvroutebutton{margin-bottom:10px}.pzvroutebutton{min-height:44px}
/* Compact PZV editor: primary times first; configuration and totals on demand. */
#pzveditor{max-width:560px}#pzvroute{font-size:12px;margin:0 0 12px}.pzvtemplates{margin:0 0 12px;padding:12px!important}.pzvtemplates .pzvremember{margin-top:10px!important;font-size:12px}.pzvtemplateedit{margin:8px 0 0}.pzvgroup{min-width:0;margin:12px 0;padding:10px 12px;border:1px solid #cbd0d5;border-radius:8px}.pzvgroup legend{font-size:13px;font-weight:650;padding:0 6px;color:#424950}#pzveditor .pzvtimepair{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.pzvgroup label{margin-bottom:0}.pzvgroup .pzvdate{font-size:10px}.pzvgroup input{margin-top:4px}#pzveditor .finishstart{padding:8px 12px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:10px}#pzveditor .finishstart span{font-size:11px}#pzveditor .finishstart strong{font-size:14px;margin:0;text-align:right}#pzveditor .note{font-size:11px;margin:10px 0;padding:9px}.pzvcalculation,.pzvdelete{font-size:12px;margin:12px 0}.pzvcalculation summary,.pzvdelete summary{cursor:pointer;padding:8px 0}.pzvsavebar{margin-top:14px}.pzvdelete{color:#747980}.pzvdelete button{margin-top:8px}#pzveditor .pzvtimepair input{padding-left:8px;padding-right:8px}
.appfooter{align-items:flex-start;flex-wrap:wrap;line-height:1.6}.appfooter>div{min-width:0}.publisher{display:block;margin-top:5px;color:#555d65;overflow-wrap:anywhere}.appversion{white-space:nowrap;color:#555d65}
/* Dark appearance keeps the railway red accent, with graphite surfaces. */
:root[data-theme=dark]{color-scheme:dark;--ink:#edf0f4;--muted:#aeb6c1;--accent:#ff7279;--line:#424a55;--paper:#14171c;--surface:#20252c;--green:#8ccba5;--red:#ff9298;--orange:#eac27b}
:root[data-theme=dark] body{background:var(--paper);color:var(--ink)}
:root[data-theme=dark] :is(header,.dock){background:#191c21}
:root[data-theme=dark] :is(.summarypanel,.panel,.trip,.documentcard,.moremetrics,dialog){background:#20252c;border-color:var(--line);color:var(--ink)}
:root[data-theme=dark] :is(button,.filebutton,input,select,textarea,.toolbar input[type=month]){background:#2a3039;border-color:#48525f;color:var(--ink)}
:root[data-theme=dark] :is(input,select,textarea){background:#171b21}
:root[data-theme=dark] :is(input,textarea)::placeholder{color:#9ca6b4}
:root[data-theme=dark] :is(button,.filebutton):hover{background:#363e49;border-color:#737e8d}
:root[data-theme=dark] :is(.primary,.dockadd){background:#c91d29;border-color:#e34b55;color:#fff}
:root[data-theme=dark] :is(.primary,.dockadd):hover{background:#a91923}
:root[data-theme=dark] :is(.textbutton,.tripedit,.documentopen,.documentactions button,.dock nav button){background:transparent}
:root[data-theme=dark] :is(.textbutton,.tag,.source,.worktime,.letter-trip,.empty .symbol){color:#ff858c}
:root[data-theme=dark] :is(.muted,.note,label,.metric span,.metric small,.timebasis,.timebasis strong,.trip p,.triptimegrid span,.moremetrics summary,.tripdetails summary,.accountinghelp,.offlinestrip,.publisher,.appversion,footer,.calday small,.filemeta,.pzvdate,.pzvtemplateedit,.pzvdayoptions,.pzvgroup legend,.pzvresult small,.finishstart span,.pzvdelete){color:#b2bbc7}
:root[data-theme=dark] :is(.metric,.quicklinks,.energysection,.energycard,.traininfocard,.monthsplit,.finishstart,dialog .note,.fileicon,.documentheroicon,.countbadge){background:#2a3039;border-color:var(--line)}
:root[data-theme=dark] :is(.metric strong,.starttime,.endtime,.energycard strong,.traininfocard strong,.quicklinks button,.pzvroutebutton){color:#edf0f4}
:root[data-theme=dark] .tone-work{background:#ac202b}:root[data-theme=dark] .tone-work :is(span,strong,small){color:#fff}
:root[data-theme=dark] :is(.empty,.calday.duty-off){background:#232930;border-color:var(--line)}
:root[data-theme=dark] :is(.calday.duty-trip,.openroutebanner,.restshort,.fileicon.pdf){background:#3b242c;border-color:#9d505a;color:#ffb1b6}
:root[data-theme=dark] :is(.openstatus,.openroutebanner p,.monthsplit .currentpart,.calday.holiday .caldate){color:#ffadb2}
:root[data-theme=dark] .restok{background:#20372d;color:#a8d9bb}
:root[data-theme=dark] .letter-off{color:#b8c1cc}
:root[data-theme=dark] .calday.selected-day{background:#512832;border-color:#ff858c;outline-color:#ff858c;box-shadow:none}
:root[data-theme=dark] .calday.selected-day .caldate{background:#d32836;color:white}
:root[data-theme=dark] .calday.today:not(.selected-day){outline-color:#b2bbc7}
:root[data-theme=dark] .pzvroutebutton{background:#2a3039;border-color:#48525f}
:root[data-theme=dark] .pzvroutebutton:hover{background:#3b2931;border-color:#ff858c}
:root[data-theme=dark] .dock nav button{color:#bac3ce}:root[data-theme=dark] .dock nav button.active{background:#363d47;color:#fff}
:root[data-theme=dark] #locofavorites button[aria-pressed=true],:root[data-theme=dark] .documenttools button[aria-pressed=true]{background:#512832;border-color:#ff858c;color:#ffc4c8}
:root[data-theme=dark] .documentactions button[aria-pressed=true]{color:#eac27b}
:root[data-theme=dark] :is(#formerror,#energyerror,#traininfoerror,#passengererror,#pzverror,#pzvtemplateerror,#finishrouteerror,.dangerbutton){color:#ff9298}
:root[data-theme=dark] :is(.pzvgroup,.pzvresult,.accountinghelp){border-color:var(--line)}
:root[data-theme=dark] #documentpreview{background:#171b21;color:var(--ink)}
:root[data-theme=dark] #toast{background:#e2e7ed;color:#171b21}
:root[data-theme=dark] dialog::backdrop{background:#000b}
/* Route cover opens all route sections together. */
.routebook.tripdetails{border:0;margin:0;padding:0}.routebook>summary.routecover{display:block;list-style:none;padding:0;color:var(--ink);cursor:pointer}.routebook>summary::-webkit-details-marker{display:none}.routebook[open]>summary span{transform:none}.routecover .tripheading p{margin-right:8px}.routecover .tripedit{min-width:44px;min-height:44px}.bookhint{display:block;text-align:center;font-size:11px;color:var(--muted);padding:12px 0 3px}.routepages{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}.comingsections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.comingsections section{padding:12px;border:1px dashed var(--line);border-radius:7px}.comingsections h4{font-size:12px;margin:0;color:var(--ink)}.comingsections p{font-size:11px;margin:5px 0 0;color:var(--muted)}#pzveditor [data-msk-time]{font-variant-numeric:tabular-nums;min-height:48px}:root[data-theme=dark] .routebook>summary.routecover{color:var(--ink)}
#securingerror{color:var(--red);font-size:13px}#securingresult h3{font-size:23px}#securingresult details{font-size:12px}#securingresult summary{cursor:pointer}
/* Attendance + stable mobile dialog editing. */
.dock nav{grid-template-columns:repeat(5,minmax(0,1fr))}.dockadd{display:none}
#attendance .toolbar{flex-wrap:wrap}#attendance .toolbar button{min-height:44px}
body.modal-open{overflow:hidden;overscroll-behavior:none}
dialog{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}
dialog::backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}
.modal-route-context{position:sticky;top:-1px;z-index:2;background:var(--surface);border-left:3px solid var(--accent);padding:10px 12px;margin:0 0 16px;font-size:12px;color:var(--ink);overflow-wrap:anywhere;box-shadow:0 2px 4px #0001}
#attendanceTrips:empty:after{content:'Сейчас нет открытого маршрута. Нажми «Открыть маршрут», чтобы записать явку.';display:block;padding:28px 16px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:14px}
#movementerror{color:var(--red);font-size:13px}
.locomenu>summary{display:flex;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;min-height:32px;align-items:center}.locomenu>summary:after{content:'＋';color:var(--accent)}.locomenu[open]>summary:after{content:'−'}.locomenu>summary::-webkit-details-marker{display:none}#lococount{margin-left:auto;color:var(--muted);font-size:12px}#locofavorites{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-height:280px;overflow:auto;overscroll-behavior:contain;margin:14px 0;gap:6px}#locofavorites button{padding:10px 6px;min-height:44px;text-align:left;overflow-wrap:anywhere}.customseries summary{cursor:pointer;color:var(--accent);font-size:13px;padding:10px 0}.movementrow small[data-date]{display:block;font-size:11px;color:var(--muted);margin-top:5px}
.calcvisible{border-left:3px solid var(--accent);padding:10px 12px;background:var(--surface);margin:8px 0 14px;overflow-wrap:anywhere}.calcvisible strong,.calcvisible small,.calcvisible span{display:block}.calcvisible strong{font-size:18px;margin:5px 0;color:var(--ink)}.calcvisible small,.calcvisible span{font-size:12px;color:var(--muted)}#vu45error{color:var(--red);font-size:13px}.comingsections>section{min-width:0}
