:root {
  --navy:#173a52;
  --blue:#0e6b8b;
  --blue-2:#138bb2;
  --gold:#efb33a;
  --bg:#f4f7f9;
  --surface:#ffffff;
  --text:#1c2730;
  --muted:#667783;
  --border:#dbe3e8;
  --green:#18864b;
  --green-bg:#e7f7ee;
  --amber:#a86400;
  --amber-bg:#fff4d9;
  --grey:#59636a;
  --grey-bg:#edf1f3;
  --red:#b42318;
  --red-bg:#feeeee;
  --shadow:0 7px 22px rgba(26,48,64,.08);
  font-family:Inter,Segoe UI,Arial,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-size:15px;line-height:1.45}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
.site-header{background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}
.header-inner{max-width:1320px;margin:auto;min-height:72px;padding:9px 20px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.brand{display:flex;align-items:center;gap:12px;color:var(--navy)}.brand:hover{text-decoration:none}.brand img{width:166px;height:auto}.brand span{display:flex;flex-direction:column;border-left:1px solid var(--border);padding-left:12px}.brand small{color:var(--muted)}
.main-nav{display:flex;align-items:center;gap:17px}.main-nav a{font-weight:600}.user-chip{background:#eef6f9;padding:8px 11px;border-radius:999px;color:var(--navy);font-size:13px}.nav-toggle{display:none;border:0;background:#eef4f6;border-radius:8px;padding:8px 11px;font-size:20px}
.page-shell{max-width:1320px;margin:auto;padding:24px 20px 60px}.site-footer{max-width:1320px;margin:auto;padding:20px;color:var(--muted);display:flex;justify-content:space-between;border-top:1px solid var(--border)}
.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.page-heading h1{font-size:28px;margin:0 0 5px;color:var(--navy)}.page-heading p{margin:0;color:var(--muted)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.week-picker{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid var(--border);padding:8px;border-radius:12px}.week-picker input{border:0;padding:6px}.week-picker a{padding:7px 10px;border-radius:8px;background:#eef5f8;font-weight:700}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:9px;padding:10px 14px;font-weight:700;cursor:pointer;font:inherit;line-height:1.1}.btn:hover{text-decoration:none;filter:brightness(.98)}.btn-primary{background:var(--blue);color:#fff}.btn-secondary{background:#fff;color:var(--navy);border-color:var(--border)}.btn-success{background:var(--green);color:#fff}.btn-danger{background:var(--red);color:#fff}.btn-warning{background:#e89a12;color:#fff}.btn-sm{padding:7px 10px;font-size:13px}.btn-block{width:100%}.btn[disabled]{opacity:.55;cursor:not-allowed}
.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}.card-header{padding:16px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:12px}.card-header h2,.card-header h3{margin:0;color:var(--navy)}.card-body{padding:18px}.card-footer{padding:14px 18px;border-top:1px solid var(--border);background:#fbfcfd;border-radius:0 0 14px 14px}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px}.stat-card{padding:18px}.stat-card strong{font-size:28px;color:var(--navy);display:block}.stat-card span{color:var(--muted)}
.school-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.school-card{overflow:hidden}.school-card .school-top{padding:17px 18px;display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.school-card h2{margin:0;font-size:20px;color:var(--navy)}.school-code{display:inline-block;background:#edf6f9;color:var(--blue);font-size:12px;font-weight:800;padding:4px 8px;border-radius:999px}.task-mini{padding:12px 18px;border-top:1px solid var(--border);display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start}.task-mini strong{color:var(--navy)}.task-mini small{display:block;color:var(--muted);margin-top:3px}.task-mini .comment-note{grid-column:2 / -1;color:var(--amber);font-size:13px;background:var(--amber-bg);padding:7px 9px;border-radius:7px}.empty-state{text-align:center;padding:30px 18px;color:var(--muted)}
.status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;white-space:nowrap}.status-completed{background:var(--green-bg);color:var(--green)}.status-ongoing{background:var(--amber-bg);color:var(--amber)}.status-pending{background:var(--grey-bg);color:var(--grey)}.status-submitted{background:#e8f1ff;color:#285ea7}.status-approved{background:var(--green-bg);color:var(--green)}.status-draft{background:var(--grey-bg);color:var(--grey)}
.alert{padding:13px 15px;border-radius:10px;margin-bottom:17px;border:1px solid}.alert-success{background:var(--green-bg);border-color:#b8e6c9;color:#126b3b}.alert-error{background:var(--red-bg);border-color:#f3c1bd;color:var(--red)}.alert-warning{background:var(--amber-bg);border-color:#f0d89e;color:var(--amber)}.alert-info{background:#eaf5fa;border-color:#bddde9;color:#155e77}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px;background:#fff}table{width:100%;border-collapse:collapse}th,td{padding:12px 11px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}th{background:#f0f5f7;color:var(--navy);font-size:13px;white-space:nowrap}tr:last-child td{border-bottom:0}.table-actions{display:flex;gap:6px;flex-wrap:wrap}.priority-note{margin-top:8px;background:var(--amber-bg);color:var(--amber);border-left:4px solid #e9a320;padding:8px 10px;border-radius:6px;font-size:13px}
.task-hero{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:start}.task-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:16px}.meta-box{background:#f6f9fa;border:1px solid var(--border);padding:12px;border-radius:9px}.meta-box small{display:block;color:var(--muted);margin-bottom:3px}.task-actions{display:flex;flex-direction:column;gap:9px;min-width:170px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.section-stack{display:flex;flex-direction:column;gap:18px}.comment{padding:12px 0;border-bottom:1px solid var(--border)}.comment:last-child{border-bottom:0}.comment-head{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:13px}.comment.priority{background:var(--amber-bg);margin:0 -10px;padding:12px 10px;border-radius:8px}.comment p{margin:7px 0 0;white-space:pre-wrap}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-weight:700;color:var(--navy)}.field input,.field select,.field textarea{width:100%;border:1px solid #cbd7dd;border-radius:9px;padding:10px 11px;font:inherit;background:#fff}.field textarea{min-height:95px;resize:vertical}.field small{color:var(--muted)}.inline-check{display:flex;align-items:center;gap:8px}.inline-check input{width:auto}.form-actions{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap;margin-top:16px}
.toilet-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.toilet-card .card-body{padding:15px}.toilet-summary{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:12px}.photo-count{background:#f1f6f8;border-radius:8px;padding:9px}.photo-count strong{display:block;color:var(--navy)}.upload-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.upload-panel{border:1px dashed #aac1cc;border-radius:9px;padding:10px}.upload-panel label{font-weight:700;display:block;margin-bottom:5px}.upload-panel input{max-width:100%}.photo-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.photo-item{position:relative;background:#eef3f5;border-radius:8px;overflow:hidden;aspect-ratio:1}.photo-item img{width:100%;height:100%;object-fit:cover;display:block}.photo-tag{position:absolute;left:5px;bottom:5px;background:rgba(0,0,0,.72);color:#fff;font-size:10px;padding:3px 5px;border-radius:5px}.photo-delete{position:absolute;right:5px;top:5px;background:rgba(180,35,24,.9);color:#fff;border:0;border-radius:50%;width:25px;height:25px;cursor:pointer}
.material-table .item-image{width:78px;height:58px;object-fit:contain;background:#fff;border:1px solid var(--border);border-radius:7px}.material-table .qty-input{width:84px}.selected-order-row{background:#f0fbf5}.material-card-list{display:none}.fulfilment-choice{display:flex;gap:10px;flex-wrap:wrap}.choice-box{flex:1;min-width:170px;border:1px solid var(--border);border-radius:10px;padding:12px;background:#fff}.choice-box input{margin-right:7px}.order-total{font-size:20px;font-weight:800;color:var(--navy)}
.login-shell{min-height:calc(100vh - 72px);display:grid;place-items:center;padding:30px 15px}.login-card{width:min(440px,100%)}.login-card .logo{text-align:center;padding:24px 24px 5px}.login-card .logo img{width:210px}.login-card h1{text-align:center;font-size:24px;color:var(--navy);margin:10px 0 3px}.login-card p{text-align:center;color:var(--muted);margin:0 0 20px}
.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.admin-link{padding:20px}.admin-link h2{font-size:18px;color:var(--navy);margin:0 0 6px}.admin-link p{margin:0;color:var(--muted)}
.thumb{width:64px;height:48px;object-fit:contain;border:1px solid var(--border);border-radius:6px;background:#fff}.muted{color:var(--muted)}.text-right{text-align:right}.nowrap{white-space:nowrap}.mt-0{margin-top:0}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mb-0{margin-bottom:0}.hidden{display:none!important}
@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr)}.school-grid,.two-col,.toilet-grid{grid-template-columns:1fr}.task-meta{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:repeat(2,1fr)}.main-nav{display:none;position:absolute;right:12px;top:65px;min-width:240px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:12px;flex-direction:column;align-items:stretch}.main-nav.open{display:flex}.nav-toggle{display:block}.user-chip{text-align:center}.brand span{display:none}}
@media(max-width:650px){.page-shell{padding:16px 12px 45px}.header-inner{padding:8px 12px;min-height:62px}.brand img{width:145px}.page-heading{flex-direction:column}.page-heading h1{font-size:24px}.stats-grid{grid-template-columns:1fr 1fr;gap:9px}.stat-card{padding:13px}.stat-card strong{font-size:23px}.task-hero{grid-template-columns:1fr}.task-actions{flex-direction:row;flex-wrap:wrap}.task-meta,.form-grid,.form-grid-3,.upload-row{grid-template-columns:1fr}.table-wrap.responsive-table{display:none}.material-card-list{display:flex;flex-direction:column;gap:10px}.material-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px;display:grid;grid-template-columns:78px 1fr;gap:11px}.material-card img{width:78px;height:70px;object-fit:contain}.material-card .field{grid-column:1/-1}.photo-gallery{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr}.site-footer{flex-direction:column;gap:5px;padding:16px 12px}.task-mini{grid-template-columns:auto 1fr}.task-mini .status{grid-column:2}.task-mini .comment-note{grid-column:2}}
.status-cancelled{background:var(--red-bg);color:var(--red)}
.photo-wrap{min-width:0}.photo-meta{font-size:11px;color:var(--muted);line-height:1.35;padding-top:5px;overflow-wrap:anywhere}.photo-meta strong{color:var(--navy)}

/* v1.0.2 photo gallery improvements */
.phase-gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.phase-gallery-section{border:1px solid var(--border);border-radius:10px;padding:10px;background:#fafcfd}.phase-gallery-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;color:var(--navy)}.phase-gallery-head span{display:inline-flex;min-width:25px;height:25px;align-items:center;justify-content:center;border-radius:999px;background:#e8f1f5;font-size:12px;font-weight:800}.photo-empty{padding:18px 10px;border:1px dashed #c3d2d9;border-radius:8px;color:var(--muted);text-align:center;font-size:13px}.phase-gallery-section .photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:0}.all-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.photo-card{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}.photo-card-image{display:block;position:relative;aspect-ratio:4/3;background:#eef3f5}.photo-card-image img{width:100%;height:100%;object-fit:cover;display:block}.photo-card-body{padding:12px;color:var(--navy)}.photo-card-body>div{font-size:13px;margin-top:4px}.photo-card-body small{display:block;color:var(--muted);margin:7px 0}.photo-card-body p{font-size:13px;margin:7px 0 10px;white-space:pre-wrap}
@media(max-width:1100px){.all-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){.all-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.phase-gallery-grid{grid-template-columns:1fr}}
@media(max-width:520px){.all-photo-grid{grid-template-columns:1fr}.phase-gallery-section .photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v1.0.3 complete school schedule, school notes and custom order items */
.school-task-count{display:inline-flex;align-items:center;justify-content:center;min-width:92px;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--navy);font-weight:800;box-shadow:var(--shadow)}
.school-notes-card{margin-bottom:16px}.school-schedule-notes{white-space:normal;line-height:1.65;color:#33434d}.school-schedule-notes br{content:"";display:block;margin-bottom:2px}
.custom-item-table input[type="text"],.custom-item-table input[type="number"],.custom-item-table input[type="file"]{width:100%;min-width:105px;border:1px solid #cbd7dd;border-radius:8px;padding:8px;font:inherit;background:#fff}.custom-item-table input[type="file"]{min-width:180px;padding:6px}.custom-item-table td{vertical-align:middle}.custom-item-table th:nth-child(1){min-width:155px}.custom-item-table th:nth-child(3){min-width:180px}.custom-item-table th:nth-child(4){min-width:160px}
@media(max-width:650px){.school-task-count{align-self:flex-start}.custom-item-table{min-width:980px}}
