
*{box-sizing:border-box}body{margin:0;background:#edf3f4;color:#203a42;font:16px system-ui,sans-serif}header{background:#075b66;color:white;padding:24px max(20px,calc((100vw - 980px)/2));}header small{letter-spacing:2px;color:#acd8dc}h1{font-size:27px;margin:10px 0}main{max-width:980px;margin:auto;padding:20px 18px 100px}.notice{font-size:13px;background:#fff3d9;padding:12px;border-radius:12px;color:#775817}nav{display:flex;gap:7px;margin:20px 0;position:sticky;top:0;background:#edf3f4;padding:10px 0;z-index:2}button{font:inherit;cursor:pointer;border:0;border-radius:11px;padding:13px;background:#e0e9eb;color:#20434b}nav button{flex:1;font-size:14px;padding:13px 6px}button.active,.primary{background:#075b66;color:white}.card{background:white;border:1px solid #dae5e7;border-radius:19px;padding:22px;margin-bottom:16px}h2{font-size:20px;margin:0 0 15px}h3{font-size:16px}.muted{color:#6f858b;font-size:14px}.hero{background:linear-gradient(125deg,#075b66,#298b96);color:white}.hero .muted{color:#c4e7e9}.temperature{font-size:65px;font-weight:600;line-height:1.3}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}.metrics strong{display:block;font-size:22px}.metrics span{font-size:13px}.hours{display:flex;gap:12px;overflow:auto}.hour{min-width:85px;padding:14px;background:#f2f7f7;border-radius:12px;text-align:center;line-height:1.9}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.day{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;padding:16px 0;border-bottom:1px solid #e8eff0}.day:last-child{border:0}label{display:block;font-size:14px;font-weight:600;margin:15px 0 7px}input,select,textarea{width:100%;border:1px solid #cadbdd;border-radius:10px;padding:13px;font:inherit;color:inherit;background:white}textarea{min-height:80px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.entry{padding:16px 0;border-top:1px solid #e2ecee}.badge{display:inline-block;padding:5px 9px;background:#e5f3ef;color:#176b52;border-radius:7px;font-size:12px}.empty{padding:25px;text-align:center;color:#758b91}section[hidden]{display:none}.toast{color:#176b52;margin:12px 0}.summary{display:flex;justify-content:space-between;gap:15px}.summary strong{font-size:30px;display:block}@media(min-width:720px){.hero{padding:30px}.layout{display:grid;grid-template-columns:1.1fr 1fr;gap:16px}}@media(max-width:500px){.grid,.fields{grid-template-columns:1fr}.card{padding:18px}.day{font-size:14px}.metrics strong{font-size:19px}header{padding:22px 20px}nav{gap:4px}nav button{font-size:12px}.summary strong{font-size:25px}}
.tvf-logo{width:105px;height:62px;object-fit:contain;background:white;border-radius:10px;padding:5px;float:right;margin-left:12px}.weather-picker{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.weather-choice{background:white;border:1px solid #cadbdd;min-width:90px}.weather-choice span{display:block;font-size:26px}.weather-choice.active{background:#e5f3ef;color:#075b66;border:2px solid #075b66}.contractor-row{display:grid;grid-template-columns:1fr 1fr 1.5fr auto;gap:8px;align-items:center;margin:10px 0}.contractor-row input,.contractor-row select{font-size:14px}.contractor-head{display:grid;grid-template-columns:1fr 1fr 1.5fr 50px;gap:8px;font-size:13px;font-weight:600}.contractor-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:14px}.contractor-table th,.contractor-table td{text-align:left;padding:10px;border-bottom:1px solid #e2ecee;vertical-align:top;overflow-wrap:anywhere}.contractor-table .stopped{color:#a33b35}.weather-readout{padding:12px;background:#eef7f7;border-radius:10px}@media(max-width:600px){.contractor-row{grid-template-columns:1fr 1fr;padding:12px;background:#f4f8f8;border-radius:12px}.contractor-row .contractor-note{grid-column:1/-1}.contractor-head{display:none}.contractor-row button{justify-self:end}.contractor-table{font-size:13px}.contractor-table th,.contractor-table td{padding:8px 4px}}
.photo-grid{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.photo-grid img{width:140px;height:110px;object-fit:cover;border-radius:10px}.photo-grid a{display:block}.photo-grid button{padding:7px;font-size:13px}.error{color:#a33b35}
/* Mobile layout: fit records to viewport without sideways scrolling. */
html{width:100%;box-sizing:border-box}body{width:100%;min-width:0}header,main,.card,section,.layout,.fields,.metrics,nav{min-width:0;max-width:100%}input,select,textarea,button{min-width:0;max-width:100%}.card,p,.muted,.badge,td{overflow-wrap:anywhere}nav button{min-width:0}.fields>div,.metrics>div{min-width:0}.photo-grid>div,.photo-grid>a{max-width:100%}.photo-grid img{max-width:100%}.contractor-row>*{min-width:0}.summary>div{min-width:0;flex:1}.weather-readout{overflow-wrap:anywhere}
@media(max-width:600px){
 header{padding:20px 16px;display:flow-root}header h1{font-size:24px;line-height:1.25}header small{font-size:10px;letter-spacing:1px}.tvf-logo{width:76px;height:48px;margin-left:8px}
 main{padding:12px 12px 70px}.card{padding:16px}.temperature{font-size:54px}.metrics{gap:8px}.metrics strong{font-size:18px;line-height:1.35}.metrics span{font-size:12px}
 nav{gap:4px}nav button{font-size:12px;padding:12px 4px}.fields{grid-template-columns:minmax(0,1fr)}
 .hours{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;overflow:visible}.hour{min-width:0;padding:10px 4px;font-size:14px}.hour .muted{font-size:12px}
 .day{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:8px}.day>span:last-child{grid-column:1/-1;text-align:left}
 .contractor-table,.contractor-table tbody{display:block;width:100%;max-width:100%}.contractor-table thead{display:none}.contractor-table tr{display:block;width:100%;padding:10px;background:#f1f7f7;border-radius:12px;margin:10px 0}.contractor-table td{display:grid;grid-template-columns:85px minmax(0,1fr);gap:8px;border:0;padding:6px 0;font-size:14px}.contractor-table td::before{font-weight:600;color:#54747c}.contractor-table td:nth-child(1)::before{content:'Nhà thầu'}.contractor-table td:nth-child(2)::before{content:'Thi công'}.contractor-table td:nth-child(3)::before{content:'Ghi chú'}.contractor-table td:first-child{font-weight:600}
 .contractor-row{grid-template-columns:minmax(0,1fr);padding:10px}.contractor-row .contractor-note{grid-column:auto}.contractor-row input,.contractor-row select{width:100%;font-size:16px}
 .weather-choice{min-width:0;flex:1 1 90px;font-size:13px}.summary{gap:10px}.summary>div{font-size:12px}.summary strong{font-size:26px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.photo-grid img{width:100%;height:110px}
 #refreshWeather,#gpsWeather,#exportExcel,#export{margin-bottom:8px;width:100%}
}
