.jm-front-app{max-width:1280px;margin:24px auto;padding:0 16px;font-family:system-ui,sans-serif}.jm-front-head{display:flex;justify-content:space-between;gap:16px;margin-bottom:18px}.jm-front-head h2{margin:0}.jm-btn{border:1px solid #2271b1;background:#2271b1;color:white;padding:8px 12px;border-radius:8px;text-decoration:none;cursor:pointer}.jm-btn-light{background:white;color:#222;border-color:#bbb}.jm-view{display:none}.jm-view.is-active{display:block}.jm-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.jm-stats>div,.jm-card{border:1px solid #ddd;background:#fff;border-radius:12px;padding:16px;margin-bottom:16px}.jm-stats span,small{display:block;color:#666}.jm-stats strong{font-size:28px}.jm-two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.jm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.jm-grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.jm-full{grid-column:1/-1}label{display:block;font-weight:600;margin-bottom:4px}.jm-card input,.jm-card select,.jm-card textarea,dialog input,dialog select,dialog textarea{width:100%;box-sizing:border-box;padding:8px}.jm-task,.jm-file{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #eee;padding:10px 0}.jm-reply{background:#f5f5f5;border-radius:8px;padding:8px;margin-top:8px}.jm-table-wrap{overflow:auto}.jm-table-wrap table{width:100%;border-collapse:collapse}.jm-table-wrap th,.jm-table-wrap td{padding:8px;border-bottom:1px solid #eee;text-align:left}.sort{border:0;background:none;font-weight:700;cursor:pointer}.jm-tabs{display:flex;gap:8px;margin-bottom:10px}.jm-file-tab.is-active{outline:2px solid #72aee6}.jm-history{border-bottom:1px solid #eee;padding:10px 0}.jm-front-login{max-width:420px;margin:30px auto;padding:20px;border:1px solid #ddd;border-radius:12px}dialog{border:0;border-radius:12px;max-width:700px;width:min(700px,90vw);padding:20px}@media(max-width:900px){.jm-grid-5{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.jm-front-head,.jm-two,.jm-stats,.jm-grid,.jm-grid-5{display:grid;grid-template-columns:1fr}.jm-task,.jm-file{flex-direction:column}}
.jm-status-event{display:grid;grid-template-columns:16px 1fr;gap:10px;padding:8px 0}
.jm-status-dot{width:10px;height:10px;border-radius:50%;background:#2271b1;margin-top:5px}

/* v0.8.4 LTR + Files + Status Timeline */
.jm-front-app{
	direction:ltr;
	text-align:left;
}
.jm-front-head,
.jm-card,
.jm-grid,
.jm-task,
.jm-file,
.jm-file-group,
.jm-upload-box{
	direction:ltr;
	text-align:left;
}
.jm-front-head nav,
.jm-tabs,
.jm-file-actions{
	flex-direction:row;
}
.jm-section-head{
	display:flex;
	justify-content:space-between;
	align-items:flex-start;
	gap:16px;
	margin-bottom:14px;
}
.jm-section-head h3{
	margin:0 0 4px;
}
.jm-section-head p{
	margin:0;
	color:#666;
}
.jm-file-tabs{
	display:flex;
	justify-content:flex-start;
	gap:8px;
	flex-wrap:wrap;
	margin-bottom:16px;
}
.jm-upload-box{
	display:grid;
	grid-template-columns:minmax(0,1fr) auto;
	gap:18px;
	align-items:end;
	padding:16px;
	border:1px solid #e0e0e0;
	border-radius:10px;
	background:#fafafa;
	margin-bottom:20px;
}
.jm-upload-control label{
	margin-bottom:7px;
}
.jm-upload-control input[type=file]{
	background:#fff;
}
.jm-upload-action{
	min-width:190px;
}
.jm-upload-action .jm-btn{
	width:100%;
}
.jm-inline-status{
	margin-top:8px;
	font-size:13px;
}
.jm-file-columns{
	display:grid;
	grid-template-columns:repeat(3,minmax(0,1fr));
	gap:16px;
}
.jm-file-group{
	border:1px solid #e6e6e6;
	border-radius:10px;
	padding:14px;
	background:#fff;
	min-height:120px;
}
.jm-file-group h4{
	margin:0 0 12px;
	font-size:18px;
}
.jm-file-list{
	display:flex;
	flex-direction:column;
	gap:8px;
}
.jm-file{
	display:block;
	border:1px solid #eeeeee;
	border-radius:8px;
	padding:10px;
	background:#fcfcfc;
}
.jm-file-info{
	margin-bottom:9px;
}
.jm-file-info strong{
	display:block;
	overflow-wrap:anywhere;
}
.jm-file-actions{
	display:flex;
	gap:6px;
	flex-wrap:wrap;
	justify-content:flex-start;
}
.jm-file-actions .jm-btn{
	padding:6px 9px;
	font-size:13px;
}
.jm-empty{
	color:#777;
	margin:8px 0;
}
#jm-status-history{
	position:relative;
	padding-top:6px;
}
.jm-status-row{
	display:grid;
	grid-template-columns:18px 1fr;
	gap:10px;
	position:relative;
	padding:8px 0 14px;
}
.jm-status-marker{
	grid-column:1;
	width:10px;
	height:10px;
	border-radius:50%;
	background:#2271b1;
	margin-top:6px;
	position:relative;
	z-index:2;
}
.jm-status-row:not(:last-child) .jm-status-marker::after{
	content:"";
	position:absolute;
	top:10px;
	left:4px;
	width:2px;
	height:calc(100% + 22px);
	background:#d8d8d8;
}
.jm-status-content{
	grid-column:2;
}
.jm-status-title{
	font-weight:700;
	font-size:16px;
}
.jm-status-transition{
	color:#666;
	margin-top:3px;
	font-size:13px;
}
@media(max-width:1000px){
	.jm-file-columns{
		grid-template-columns:1fr;
	}
}
@media(max-width:700px){
	.jm-upload-box{
		grid-template-columns:1fr;
	}
	.jm-upload-action{
		min-width:0;
	}
}

/* v0.8.5 status history visibility */
.jm-status-timeline,.jm-status-history-list{display:flex;flex-direction:column;gap:0}
.jm-status-event,.jm-status-row{border-bottom:1px solid #ececec;padding-top:10px;padding-bottom:12px}
.jm-status-event:last-child,.jm-status-row:last-child{border-bottom:0}

/* v0.8.7 responsive + notification + upload state */
.jm-front-app{width:100%;box-sizing:border-box;overflow-x:hidden}
.jm-card{box-sizing:border-box;max-width:100%}
.jm-grid>*{min-width:0}
.jm-card input,.jm-card select,.jm-card textarea{max-width:100%}
.jm-btn:disabled{opacity:.55;cursor:not-allowed}
#jm-file-msg{display:block;margin:8px 0 14px;font-weight:600}
.jm-notification-dialog{width:min(560px,92vw)}
.jm-notification-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.jm-notification-item{padding:12px 0;border-bottom:1px solid #eee}
.jm-notification-item:last-child{border-bottom:0}
.jm-notification-item strong,.jm-notification-item small{display:block}
@media(max-width:1100px){
	.jm-grid-5{grid-template-columns:repeat(3,minmax(0,1fr))}
	.jm-file-columns{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:800px){
	.jm-front-app{padding:0 10px;margin:12px auto}
	.jm-front-head{display:flex;flex-direction:column;align-items:stretch}
	.jm-front-head nav{display:flex;flex-wrap:wrap;width:100%}
	.jm-front-head nav .jm-btn{flex:1 1 auto;text-align:center}
	.jm-stats{grid-template-columns:1fr 1fr}
	.jm-two,.jm-grid,.jm-grid-5,.jm-file-columns{grid-template-columns:1fr}
	.jm-upload-box{grid-template-columns:1fr}
	.jm-task,.jm-file{display:flex;flex-direction:column;align-items:stretch}
	.jm-task>div:last-child,.jm-file-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start}
	.jm-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
	.jm-table-wrap table{min-width:760px}
}
@media(max-width:480px){
	.jm-stats{grid-template-columns:1fr}
	.jm-btn{width:auto;max-width:100%}
	.jm-file-tabs .jm-btn{flex:1 1 30%}
	dialog{width:94vw;max-width:94vw;box-sizing:border-box}
}


/* v0.8.14 Job ID correction + status overdue */
.jm-overdue-title{color:#b32d2e!important}
.jm-overdue-badge{
	display:inline-block;
	margin-left:6px;
	padding:2px 7px;
	border-radius:999px;
	background:#b32d2e;
	color:#fff;
	font-size:11px;
	font-weight:800;
	letter-spacing:.03em;
	vertical-align:middle;
}
.jm-overdue-row td{background:#fff7f7}

.jm-file-restricted{display:inline-block;padding:4px 8px;border:1px solid currentColor;border-radius:6px;font-size:11px;font-weight:800;letter-spacing:.03em}

/* v0.9.6 upload feedback: keep errors away from the file chooser */
.jm-upload-message{max-width:760px;padding:7px 10px;border-radius:6px;background:#f6f7f7;font-size:12px;line-height:1.35;overflow-wrap:anywhere}

/* v0.9.19 packing list and final invoice */
.jm-packing-summary{margin-top:14px;padding:12px;border-radius:8px;background:#f6f7f7}
.jm-packing-facts{display:flex;flex-wrap:wrap;gap:10px 24px}
.jm-packing-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.jm-packing-table{width:100%;min-width:1280px;border-collapse:collapse;font-size:11px;line-height:1.25}
.jm-packing-table th,.jm-packing-table td{padding:4px;border:1px solid #dcdcde;vertical-align:top;text-align:left}
.jm-packing-table th{background:#1f4f79;color:#fff;white-space:nowrap}
.jm-packing-table td{background:#fff}
.jm-packing-table .jm-packing-description{min-width:170px;white-space:normal}
.jm-packing-table .jm-number{text-align:right}
.jm-packing-table input{width:82px;min-width:72px;box-sizing:border-box;padding:5px;font-size:11px}
.jm-packing-table input[type="text"]{width:115px}
.jm-packing-table input.jm-packing-calculated{background:#eef6ff;color:#1f4f79;font-weight:700}
.jm-packing-line-actions{min-width:132px}
.jm-packing-line-actions .jm-btn{display:block;width:100%;margin:0 0 5px;padding:6px 8px;font-size:11px}
.jm-packing-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#jm-packing-msg{font-weight:600}
#jm-packing-msg.is-error{color:#b32d2e}
.jm-packing-state{display:inline-block;padding:5px 9px;border-radius:999px;background:#fff3cd;color:#664d03;font-size:12px;font-weight:800}
.jm-packing-state.is-finalized{background:#d1e7dd;color:#0f5132}
#jm-packing-links{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:800px){
	.jm-packing-actions .jm-btn{width:100%}
	.jm-packing-facts{display:grid;grid-template-columns:1fr}
}
