:root{--blue:#557ebf;--blue-dark:#3463ae;--cyan:#22aeca;--ink:#17233b;--muted:#65728a;--line:#dce3ed;--surface:#fff;--page:#f3f6fa;--orange:#ffc764}*{box-sizing:border-box}html,body{min-height:100%}body{padding-top:64px;background:var(--page);color:var(--ink);font-family:"Segoe UI",Arial,sans-serif}.body-content{max-width:1500px;margin:0 auto;padding:24px}.app-header{min-height:64px;background:var(--blue);border-color:var(--blue-dark);box-shadow:0 2px 12px rgba(25,45,85,.18)}.header-grid{float:none;display:grid;grid-template-columns:54px 1fr 54px;align-items:center;width:100%;height:63px}.navbar-brand{float:none;height:auto;padding:0;text-align:center;color:#fff!important;font-size:24px}.navbar-brand small{font-size:12px;font-weight:600}.nav-icon{border:0;background:transparent;color:#fff!important;font-size:30px;text-decoration:none;text-align:center;line-height:1}.logout-form{margin:0;text-align:right}.login-page{min-height:calc(100vh - 48px);display:grid;place-items:center;padding:20px}.login-panel{width:min(430px,100%);padding:38px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 55px rgba(30,50,90,.12)}.login-brand{text-align:center;color:var(--blue);font-size:26px;font-weight:800}.login-brand span{display:block;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.2em}.login-panel h1{text-align:center;font-size:24px;margin:28px 0}.mock-hint{margin:24px 0 0;text-align:center;color:var(--muted);font-size:12px}.form-control{min-height:42px;border-color:#cdd6e3;border-radius:6px;box-shadow:none}.form-control:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(85,126,191,.18)}textarea.form-control{resize:vertical}.btn{border-radius:6px;font-weight:650;min-height:40px}.btn-primary{background:var(--blue);border-color:var(--blue-dark)}.btn-primary:hover,.btn-primary:focus{background:var(--blue-dark)}.btn-info{background:var(--cyan);border-color:#1594ad}.page-card,.results-card,.editing-panel,.line-region,.order-hero{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 18px rgba(42,60,95,.05)}.page-card{padding:26px}.page-heading,.section-title,.order-hero{display:flex;align-items:center;justify-content:space-between;gap:18px}.page-heading h1,.order-hero h1{margin:2px 0 0;font-size:30px}.eyebrow{margin:0;color:var(--blue);font-weight:750;font-size:11px;letter-spacing:.14em}.status-chip,.section-title span,.badge-state{display:inline-flex;padding:6px 10px;border-radius:20px;background:#eaf0fb;color:var(--blue-dark);font-weight:700;font-size:12px}.filter-grid{display:grid;grid-template-columns:1.3fr 1fr .8fr .8fr .8fr 120px;gap:14px;align-items:end;margin-top:24px}.filter-grid .form-group{margin:0}.filter-action{padding-bottom:0}.results-card{margin-top:18px;padding:22px}.section-title h2{margin:0;font-size:19px}.empty-state{text-align:center;padding:54px 20px;color:var(--muted)}.empty-state h3{color:var(--ink);font-size:17px}.empty-icon{font-size:42px;color:#9eabc0}.order-list{margin-top:14px;border-top:1px solid var(--line)}.order-card{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 12px;border-bottom:1px solid var(--line);color:inherit;text-decoration:none!important;transition:.15s}.order-card:hover,.order-card:focus{background:#f0f5fc;color:inherit}.order-title{display:flex;gap:12px;align-items:baseline}.order-title strong{color:var(--blue-dark);font-size:16px}.order-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;color:var(--muted);font-size:12px}.open-order{white-space:nowrap;color:var(--blue-dark);font-weight:700}.open-order b{font-size:22px}.order-hero{padding:22px 26px}.order-hero p{margin:6px 0 0;color:var(--muted)}.summary{display:flex;gap:10px}.summary div{min-width:74px;padding:9px 13px;text-align:center;background:#f5f7fb;border-radius:8px}.summary strong,.summary span{display:block}.summary strong{font-size:20px;color:var(--blue-dark)}.summary span{font-size:10px;color:var(--muted);text-transform:uppercase}.measurement-tabs{margin-top:18px;border:0;padding-left:10px}.measurement-tabs>li>a{color:var(--muted);font-weight:700;border:0!important;border-radius:8px 8px 0 0}.measurement-tabs>li.active>a{background:var(--blue);color:#fff}.editing-panel{padding:20px;border-radius:0 12px 12px 12px}.header-form-grid{display:grid;grid-template-columns:180px 1fr 1fr auto;gap:14px;align-items:end}.header-form-grid .form-group{margin:0}.char-count{color:var(--muted)}.workflow-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.editing-panel .door-actions,.editing-panel .floor-actions{display:none}.editing-panel.is-door .door-actions,.editing-panel.is-floor .floor-actions{display:flex}.editing-panel.is-door .floor-only{display:none}.line-region{margin-top:16px;padding:20px}.responsive-table{overflow-x:auto}.data-table{margin:14px 0 0}.data-table th{background:#f0f3f7;color:#56637a;font-size:11px;text-transform:uppercase;letter-spacing:.04em;border-bottom:0!important}.data-table td{vertical-align:middle!important}.data-table td strong,.data-table td small{display:block}.data-table td small{margin-top:3px;color:var(--muted)}.modal-content{border:0;border-radius:10px;overflow:hidden}.modal-header{background:#f4f6f9;border-color:var(--line)}.modal-title{font-size:19px;font-weight:700}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.modal-grid .form-group{margin:0}.span-2{grid-column:span 2}.app-loader{position:fixed;inset:0;z-index:2000;display:none;place-items:center;align-content:center;gap:12px;background:rgba(15,28,50,.4);color:#fff;font-weight:700}.app-loader.visible{display:grid}.spinner{width:42px;height:42px;border:4px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast-message{position:fixed;right:24px;bottom:24px;z-index:2100;max-width:420px;padding:13px 18px;border-radius:7px;background:#217a56;color:#fff;opacity:0;transform:translateY(15px);pointer-events:none;transition:.2s}.toast-message.visible{opacity:1;transform:none}:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
@media(max-width:1100px){.filter-grid{grid-template-columns:repeat(3,1fr)}.header-form-grid{grid-template-columns:160px 1fr 1fr}.header-form-grid .form-action{grid-column:3;text-align:right}}
@media(max-width:767px){body{padding-top:54px}.body-content{padding:12px}.app-header,.header-grid{min-height:54px;height:53px}.navbar-brand{font-size:20px}.page-card,.results-card,.editing-panel,.line-region,.order-hero{border-radius:9px}.page-card,.results-card,.line-region{padding:16px}.page-heading{align-items:flex-start}.filter-grid,.header-form-grid,.modal-grid{grid-template-columns:1fr}.filter-action,.header-form-grid .form-action,.span-2{grid-column:auto}.order-card{align-items:flex-start}.order-title{display:block}.order-title span{display:block;margin-top:3px}.order-meta{gap:6px}.order-meta span{flex-basis:100%}.open-order{font-size:0}.open-order b{font-size:28px}.order-hero{display:block;padding:17px}.summary{margin-top:16px}.summary div{flex:1}.measurement-tabs{display:flex;padding:0}.measurement-tabs>li{flex:1;text-align:center}.measurement-tabs>li>a{padding:10px 5px}.workflow-actions{justify-content:stretch}.workflow-actions .btn{flex:1 1 45%}.responsive-table{overflow:visible}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table thead{display:none}.data-table tr{padding:10px 0;border-bottom:1px solid var(--line)}.data-table td{display:grid;grid-template-columns:112px 1fr;gap:10px;border:0!important;padding:5px 7px!important;text-align:left}.data-table td:before{content:attr(data-label);color:var(--muted);font-size:10px;font-weight:750;text-transform:uppercase}.data-table td:last-child:not([data-label]){display:block;text-align:right}.modal-dialog{margin:8px}.modal-body{max-height:70vh;overflow-y:auto}.toast-message{left:12px;right:12px;bottom:12px}}
@media(max-width:420px){.filter-grid{grid-template-columns:1fr}.status-chip{display:none}.summary{gap:5px}.workflow-actions .btn{flex-basis:100%}}

/* Header uses dedicated grid areas so Bootstrap navbar floats cannot reorder it. */
.app-header{margin:0}
.app-header-inner{display:grid;grid-template-columns:56px minmax(0,1fr) 56px;grid-template-areas:"back brand menu";align-items:center;width:100%;height:63px;padding:0 18px}
.header-back{grid-area:back}
.app-brand{grid-area:brand;justify-self:center;display:flex;flex-direction:column;align-items:center;min-width:0;padding:4px 14px;color:#fff!important;text-decoration:none!important;line-height:1.05}
.app-brand strong{font-size:24px}
.app-brand small{margin-top:4px;font-size:12px;font-weight:600}
.header-menu{grid-area:menu;justify-self:end}
.header-action{display:grid;place-items:center;width:48px;height:48px;padding:0;border:0;background:transparent;color:#fff!important;font-size:28px;line-height:1;text-decoration:none!important}
.header-action:hover,.header-action:focus{color:var(--orange)!important}
.header-menu .dropdown-menu{margin-top:5px}
.logout-form{margin:0}
.logout-menu-item{display:block;width:100%;padding:9px 20px;border:0;background:#fff;color:#333;text-align:left;white-space:nowrap}
.logout-menu-item:hover,.logout-menu-item:focus{background:#f5f5f5}
.logout-menu-item .glyphicon{margin-right:8px}
@media(max-width:767px){.app-header-inner{height:53px;padding:0 6px;grid-template-columns:48px minmax(0,1fr) 48px}.app-brand strong{font-size:20px}.app-brand small{font-size:10px}.header-action{width:44px;height:44px;font-size:24px}}

/* Keep long result sets inside the panel instead of growing the whole page. */
.order-list,
.line-region .responsive-table{
    max-height:56vh;
    overflow:auto;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
    -webkit-overflow-scrolling:touch;
}
.order-list{
    border-bottom:1px solid var(--line);
}
.line-region .responsive-table .data-table thead th{
    position:sticky;
    top:0;
    z-index:2;
    box-shadow:0 1px 0 var(--line);
}

/* Keep additional-work actions visible while the work list scrolls. */
.work-modal .modal-dialog{
    height:calc(100vh - 60px);
}
.work-modal .modal-content,
.work-modal .ajax-modal-form{
    height:100%;
}
.work-modal .ajax-modal-form{
    display:flex;
    flex-direction:column;
}
.work-modal .modal-header,
.work-modal .modal-footer{
    flex:0 0 auto;
}
.work-modal .modal-body{
    flex:1 1 auto;
    min-height:0;
    overflow:hidden;
}
.work-modal .work-list-container{
    display:flex;
    flex-direction:column;
    height:100%;
    min-height:0;
}
.work-modal .work-filter{
    flex:0 0 auto;
    margin-bottom:10px;
}
.work-modal .work-filter label{
    margin-bottom:5px;
}
.work-modal .work-filter .input-group-btn .btn{
    min-width:44px;
    height:42px;
    padding:6px 12px;
    font-size:22px;
    line-height:1;
}
.work-modal .responsive-table{
    flex:1 1 auto;
    min-height:0;
    overflow:auto;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
    -webkit-overflow-scrolling:touch;
}
.work-modal .responsive-table .data-table thead th{
    position:sticky;
    top:0;
    z-index:2;
    box-shadow:0 1px 0 var(--line);
}
@media(max-width:767px){
    .order-list,
    .line-region .responsive-table{
        max-height:58vh;
        overflow-y:auto;
        overflow-x:visible;
    }
    .line-region .responsive-table .data-table thead th{
        position:static;
    }
    .work-modal .modal-dialog{
        height:calc(100vh - 16px);
    }
    .work-modal .modal-body{
        max-height:none;
        overflow:hidden;
    }
    .work-modal .responsive-table{
        overflow-y:auto;
        overflow-x:visible;
    }
    .work-modal .responsive-table .data-table thead th{
        position:static;
    }
}

/* Make integration and validation failures visually distinct from regular dialogs. */
#errorModal .modal-content{
    background:#fff4f4;
    border:1px solid #e6a1a8;
    box-shadow:0 18px 50px rgba(122,28,38,.28);
}
#errorModal .modal-header{
    background:#f8d7da;
    border-bottom-color:#e6a1a8;
}
#errorModal .modal-title,
#errorModal .modal-header .close,
#errorModal #errorText{
    color:#842029;
}
#errorModal .modal-body{
    background:#fff4f4;
}
#errorModal #errorText{
    margin:0;
    font-weight:600;
    white-space:pre-wrap;
}
#errorModal .modal-footer{
    background:#fff4f4;
    border-top-color:#f0c2c7;
}

/* Align the workflow header controls by their top edges and keep the save
   action in a dedicated column when the floor-only humidity field is hidden. */
.header-form-grid{
    align-items:start;
}
.header-form-grid>.floor-only{
    grid-area:humidity;
}
.header-form-grid>.form-group:nth-child(2){
    grid-area:delivery;
}
.header-form-grid>.form-group:nth-child(3){
    grid-area:note;
}
.header-form-grid>.form-action{
    grid-area:action;
    align-self:start;
    padding-top:25px;
}

/* Keep the submitted date format stable while retaining a native calendar picker. */
.localized-date-input{
    position:relative;
}
.localized-date-input .form-control{
    padding-right:48px;
}
.localized-date-button{
    position:absolute;
    top:0;
    right:0;
    z-index:2;
    width:44px;
    height:42px;
    padding:0;
    border:0;
    border-left:1px solid #cdd6e3;
    border-radius:0 6px 6px 0;
    background:transparent;
    color:var(--blue-dark);
}
.localized-date-button:hover,
.localized-date-button:focus{
    background:#f0f5fc;
}
.localized-date-input .js-native-date{
    position:absolute;
    bottom:0;
    right:0;
    width:1px;
    height:1px;
    margin:0;
    border:0;
    opacity:0;
    pointer-events:none;
}
.editing-panel.is-door .header-form-grid{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;
    grid-template-areas:"delivery note action";
}
.editing-panel.is-floor .header-form-grid{
    grid-template-columns:180px minmax(0,1fr) minmax(0,1fr) auto;
    grid-template-areas:"humidity delivery note action";
}
@media(max-width:767px){
    .editing-panel.is-door .header-form-grid{
        grid-template-columns:1fr;
        grid-template-areas:"delivery" "note" "action";
    }
    .editing-panel.is-floor .header-form-grid{
        grid-template-columns:1fr;
        grid-template-areas:"humidity" "delivery" "note" "action";
    }
    .header-form-grid>.form-action{
        padding-top:0;
    }
}
