:root {
    --dps-ink: #18302b;
    --dps-muted: #687b75;
    --dps-line: #dce7e2;
    --dps-surface: #ffffff;
    --dps-wash: #f2f7f4;
    --dps-green: #147a5b;
    --dps-green-dark: #0d5b43;
    --dps-gold: #d19a3a;
    --dps-red: #b93838;
}

.dps-app, .dps-app * { box-sizing: border-box; }
.dps-app {
    color: var(--dps-ink);
    font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    line-height: 1.55;
    padding: 28px 14px;
    background:
        radial-gradient(circle at 8% 0%, rgba(20,122,91,.10), transparent 30%),
        linear-gradient(180deg, #fbfdfc 0%, #eef5f1 100%);
    border-radius: 24px;
}
.dps-shell { max-width: 880px; margin: 0 auto; }
.dps-brand { display:flex; gap:16px; align-items:center; margin:0 0 22px; }
.dps-brand-mark {
    width:50px; height:50px; border-radius:16px; display:grid; place-items:center;
    background:var(--dps-green); color:#fff; font-weight:800; letter-spacing:-1px;
    box-shadow:0 8px 24px rgba(20,122,91,.25);
}
.dps-kicker,.dps-brand h2,.dps-card h3,.dps-card p { margin:0; }
.dps-kicker { color:var(--dps-green); font-size:12px; text-transform:uppercase; letter-spacing:.12em; font-weight:800; }
.dps-brand h2 { font-size:clamp(22px,4vw,32px); letter-spacing:-.035em; }
.dps-card {
    background:var(--dps-surface); border:1px solid var(--dps-line); border-radius:22px;
    padding:clamp(20px,4vw,38px); box-shadow:0 18px 54px rgba(25,55,46,.08);
}
.dps-login { display:grid; grid-template-columns:.95fr 1.05fr; gap:42px; align-items:center; }
.dps-card-intro { padding-right:20px; }
.dps-card h3 { font-size:clamp(22px,3vw,30px); line-height:1.17; letter-spacing:-.025em; margin:7px 0 10px; }
.dps-card p { color:var(--dps-muted); }
.dps-step { display:inline-block; color:var(--dps-green); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.11em; }
.dps-card label,.dps-time>span { display:block; font-size:13px; font-weight:750; margin:0 0 7px; }
.dps-card input,.dps-card textarea {
    width:100%; min-height:48px; border:1px solid #cbdad3; border-radius:11px; background:#fff;
    padding:10px 13px; font:inherit; color:var(--dps-ink); outline:none;
}
.dps-card textarea { resize:vertical; }
.dps-card input:focus,.dps-card textarea:focus { border-color:var(--dps-green); box-shadow:0 0 0 3px rgba(20,122,91,.12); }
.dps-login form>label:not(:first-of-type) { margin-top:17px; }
.dps-password { position:relative; }
.dps-password input { padding-right:90px; }
.dps-reveal { position:absolute; right:7px; top:7px; height:34px; border:0; border-radius:8px; background:var(--dps-wash); color:var(--dps-green-dark); font-weight:750; cursor:pointer; }
.dps-button {
    min-height:46px; border:0; border-radius:11px; padding:10px 20px; font:inherit; font-weight:800;
    cursor:pointer; text-decoration:none; transition:transform .15s ease, background .15s ease;
}
.dps-button:hover { transform:translateY(-1px); }
.dps-button-primary { background:var(--dps-green); color:#fff; }
.dps-button-primary:hover { background:var(--dps-green-dark); color:#fff; }
.dps-button-primary:disabled { opacity:.45; cursor:not-allowed; transform:none; }
.dps-button-muted { background:#eaf1ed; color:var(--dps-ink); }
.dps-login .dps-button { width:100%; margin-top:22px; }
.dps-help { margin-top:12px !important; font-size:12px; text-align:center; }
.dps-alert { padding:13px 16px; border-radius:12px; margin:0 0 18px; font-size:14px; font-weight:650; }
.dps-alert-error { background:#fff0f0; color:#8f2929; border:1px solid #f3caca; }
.dps-alert-success { background:#e9f7f0; color:#0f6248; border:1px solid #bee5d5; }
.dps-studentbar {
    display:flex; justify-content:space-between; align-items:center; padding:13px 16px; margin-bottom:13px;
    border-radius:15px; background:#173c32; color:#fff;
}
.dps-studentbar>div { display:flex; align-items:center; gap:11px; }
.dps-studentbar strong,.dps-studentbar small { display:block; }
.dps-studentbar small { opacity:.72; }
.dps-studentbar a { color:#d9f2e7; font-weight:750; font-size:13px; }
.dps-avatar { display:grid; place-items:center; width:38px; height:38px; border-radius:50%; background:#e7b95d; color:#3b2a0b; font-weight:850; }
.dps-form-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:25px; }
.dps-status { white-space:nowrap; padding:7px 10px; border-radius:999px; font-size:12px; font-weight:800; }
.dps-status-empty { background:#eef1f0; color:#62706b; }
.dps-status-draft { background:#fff5dc; color:#8b641c; }
.dps-status-pending { background:#e9f1ff; color:#315d9e; }
.dps-status-verified { background:#e1f5ec; color:#0d6a4b; }
.dps-status-revision { background:#ffebeb; color:#a12e2e; }
.dps-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.dps-number { margin:0 !important; }
.dps-input-unit { position:relative; display:block; }
.dps-input-unit input { padding-right:62px; }
.dps-input-unit em { position:absolute; right:12px; top:50%; transform:translateY(-50%); color:var(--dps-muted); font-size:12px; font-style:normal; font-weight:700; }
.dps-card hr { border:0; border-top:1px solid var(--dps-line); margin:26px 0; }
.dps-field-wide { max-width:430px; }
.dps-field-wide small { display:block; color:var(--dps-muted); margin-top:5px; }
.dps-time { margin:22px 0; }
.dps-time>div { display:grid; grid-template-columns:repeat(2,minmax(0,200px)); gap:18px; }
.dps-periodic-form fieldset { border:0; margin:0; padding:0; }
.dps-periodic-form fieldset:disabled { opacity:.72; }
.dps-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:20px; }
.dps-confirm { display:flex !important; justify-content:flex-end; align-items:center; gap:8px; margin-top:12px !important; color:var(--dps-muted); }
.dps-confirm input { width:17px; min-height:17px; }
.dps-review-note { background:#fff8e8; border-left:4px solid var(--dps-gold); border-radius:6px 12px 12px 6px; padding:12px 14px; margin-bottom:20px; }
.dps-review-note p { margin-top:3px; }
.dps-public-progress { max-width:620px; padding:22px; border:1px solid var(--dps-line); border-radius:18px; background:#fff; }
.dps-public-progress>div:first-child { display:flex; align-items:baseline; gap:8px; }
.dps-public-progress strong { font-size:32px; color:var(--dps-green); }
.dps-progress { height:9px; background:#e3ece8; border-radius:99px; overflow:hidden; margin:12px 0; }
.dps-progress span { display:block; height:100%; background:var(--dps-green); border-radius:inherit; }
.dps-public-progress p { margin:0; color:var(--dps-muted); }

@media (max-width:700px) {
    .dps-app { border-radius:16px; padding:20px 10px; }
    .dps-login { grid-template-columns:1fr; gap:24px; }
    .dps-card-intro { padding-right:0; }
    .dps-form-heading { display:block; }
    .dps-status { display:inline-block; margin-top:13px; }
}
@media (max-width:500px) {
    .dps-grid { grid-template-columns:1fr; }
    .dps-time>div { grid-template-columns:1fr 1fr; }
    .dps-actions { flex-direction:column-reverse; }
    .dps-actions .dps-button { width:100%; }
    .dps-studentbar small { max-width:210px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
}

/* v1.2: sensible ranges and live student warnings. */
.dps-range-hint { display:block; margin-top:5px; color:var(--dps-muted); font-size:11px; font-weight:500; }
.dps-card input.dps-value-warning { border-color:#d58b1c; background:#fffaf0; box-shadow:0 0 0 3px rgba(213,139,28,.12); }
.dps-live-warning { display:flex; gap:13px; margin:20px 0 12px; padding:15px; border:1px solid #f0c77e; border-radius:13px; background:#fff8e9; color:#68480d; }
.dps-live-warning[hidden],.dps-warning-confirm[hidden] { display:none !important; }
.dps-warning-icon { flex:0 0 30px; width:30px; height:30px; display:grid; place-items:center; border-radius:50%; background:#d58b1c; color:#fff; font-weight:900; }
.dps-live-warning strong { display:block; color:#68480d; }
.dps-live-warning p { margin:2px 0 7px; color:#806426; font-size:13px; }
.dps-live-warning ul { margin:7px 0 0 18px; padding:0; }
.dps-live-warning li { margin:4px 0; font-size:13px; }
.dps-warning-confirm { display:flex !important; align-items:flex-start; gap:8px; margin:0 0 20px !important; padding:11px 12px; border-radius:10px; background:#fff3da; color:#74500e; }
.dps-warning-confirm input { flex:0 0 17px; width:17px; min-height:17px; margin-top:2px; }