@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap');

/* ===========================
   DESIGN TOKENS
=========================== */

:root{
    --primary:#023a51;
    --secondary:#ddcba4;
    --tertiary:#a63d40;
    --accent1:#6494aa;
    --accent2:#59667d;
    --background:#f5f7fa;
    --surface:#ffffff;
    --border:#d9dee6;
    --text:#161616;
    --muted:#6d7788;
    --success:#2e7d32;
    --warning:#f9a825;
    --danger:#c62828;
    --radius:12px;
    --shadow:0 8px 24px rgba(0,0,0,.08);
    --transition:.25s ease;
}

/* ===========================
   RESET
=========================== */

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html,
body{
    height:100%;
}

body{
    background:var(--background);
    font-family:'Plus Jakarta Sans',sans-serif;
    font-size:15px;
    color:var(--text);
    overflow-x:hidden;
}

a{
    color:inherit;
    text-decoration:none;
}

img{
    max-width:100%;
    display:block;
}

button{
    font:inherit;
    cursor:pointer;
}

input,
textarea,
select{
    font:inherit;
    outline:none;
    transition:.2s;
}

input:focus,
textarea:focus,
select:focus{
    border-color:var(--accent1);
    box-shadow:0 0 0 3px rgba(100,148,170,.15);
}

/* ===========================
   APP LAYOUT
=========================== */
h1 {
display: block;
font-size: 2em;
/*margin-block-start: 0.67em;
margin-block-end: 0.67em;
margin-inline-start: 0px;*/
color:var(--primary);
font-weight: bold;
}


.app{
    display:grid;
    grid-template-columns:280px 1fr;
    height:100vh;
    background:var(--background);
}

.content{
    display:flex;
    flex-direction:column;
    height:100vh;
    overflow:hidden;
}

#workspace{
    padding:30px;
    overflow:auto;
    background:var(--background);
}

/* ===========================
   SIDEBAR
=========================== */

.sidebar{
    background:var(--border);
    color:var(--primary);
    display:flex;
    flex-direction:column;
    border-right:1px solid #c9d2dc;
}

.logo{
    padding:28px;
}

.logo img{
    width:170px;
    margin:auto;
}

.sidebar nav{
    padding:20px 0;
    display:flex;
    flex-direction:column;
}

.sidebar nav a{
    display:flex;
    align-items:center;
    gap:12px;
    padding:14px 24px;
    color:var(--primary);
    font-weight:600;
    transition:var(--transition);
    border-left:4px solid transparent;
}

.sidebar nav a:hover{
    background:rgba(2,58,81,.08);
    border-left-color:var(--secondary);
    color:var(--primary);
}

.sidebar nav a.active{
    background:var(--primary);
    border-left-color:var(--secondary);
    color:#ffffff;
}

.sidebar-footer{
    margin-top:auto;
    padding:20px 24px;
    border-top:1px solid #c9d2dc;
    color:var(--accent2);
    font-size:13px;
}

/* ===========================
   TOPBAR
=========================== */

.topbar{
    height:72px;
    background:white;
    display:flex;
    align-items:center;
    gap:16px;
    padding:0 30px;
    border-bottom:1px solid var(--border);
}

.topbar-date{
    font-weight:600;
    color:var(--primary);
}

.topbar #notification-icon{
    margin-left:auto;
}

.topbar input{
    width:420px;
    padding:12px 16px;
    border:1px solid var(--border);
    border-radius:10px;
    background:#fafafa;
}

/* ===========================
   BREADCRUMB
=========================== */

.breadcrumb{
    padding:16px 30px;
    background:#fff;
    border-bottom:1px solid #ececec;
    font-size:14px;
    color:var(--muted);
}

.breadcrumb span{
    margin:0 8px;
}

/* ===========================
   CARDS
=========================== */

.card{
    background:var(--surface);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    padding:24px;
    border:1px solid rgba(0,0,0,.03);
}

/* ===========================
   DASHBOARD
=========================== */

.dashboard-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
    gap:20px;
    margin-bottom:30px;
}

.dashboard-panels{
    display:grid;
    grid-template-columns:2fr 1fr 1fr;
    gap:20px;
    align-items:start;
}

.metric{
    text-align:center;
}

.metric-number{
    font-size:42px;
    font-weight:700;
    color:var(--primary);
    margin-top:15px;
}

/* ===========================
   TABLES
=========================== */

table{
    width:100%;
    border-collapse:collapse;
}

th{
    background:#f6f7fa;
    padding:12px;
    text-align:left;
}

td{
    padding:12px;
    border-bottom:1px solid #ececec;
}

.data-table{
    width:100%;
    border-collapse:collapse;
    background:white;
    overflow:hidden;
    border-radius:12px;
}

.data-table th{
    padding:16px;
    background:#f7f8fa;
    font-weight:600;
    border-bottom:1px solid var(--border);
}

.data-table td{
    padding:16px;
    border-bottom:1px solid #ececec;
}

.data-table tbody tr:hover{
    background:#fafafa;
}

/* ===========================
   BUTTONS
=========================== */

.btn{
    margin-top: 30px;
    padding:12px 20px;
    border-radius:10px;
    font-weight:600;
    transition:var(--transition);
    border: 1px solid transparent;
    border-color:var(--primary);
}

.btn:hover{
    transform:translateY(-1px);
}

.btn-primary{
    background:var(--secondary);
    color:var(--primary);
}

.btn-primary:hover{
    background:var(--accent1);
}

.btn-secondary{
    background:var(--secondary);
    color:var(--text);
}

.btn-danger{
    background:var(--tertiary);
    color:white;
}

/* ===========================
   LOGIN
=========================== */

.login-body{
    min-height:100vh;
    display:flex;
    align-items:center;
    justify-content:center;
    background:linear-gradient(135deg,var(--primary),#012c3d);
}

.login-card{
    width:700px;
    background:#fff;
    padding:34px;
    border-radius:16px;
    box-shadow:0 18px 45px rgba(0,0,0,.12);
}

.login-card h1{
    margin-bottom:8px;
    color:var(--primary);
}

.login-card p{
    margin-bottom:24px;
    color:var(--muted);
}

.login-card label{
    display:block;
    margin:14px 0 6px;
    font-weight:600;
}

.login-card input{
    width:100%;
    padding:12px;
    border:1px solid #ccd3dd;
    border-radius:10px;
}

.login-card button{
    width:100%;
    margin-top:22px;
    padding:13px;
    border:0;
    border-radius:10px;
    background:var(--primary);
    color:#fff;
    font-weight:700;
}

/* ===========================
   MODALS
=========================== */

.modal{
    display:none;
    position:fixed;
    left:0;
    top:0;
    right:0;
    bottom:0;
    background:rgba(0,0,0,.45);
    justify-content:center;
    align-items:center;
    z-index:9000;
}

.modal-window{
    width:700px;
    max-height:90vh;
    overflow-y:auto;
    background:white;
    border-radius:14px;
    padding:30px;
    box-shadow:0 20px 50px rgba(0,0,0,.2);
}

.modal-window input,
.modal-window select,
.modal-window textarea{
    width:100%;
    margin-bottom:15px;
    padding:12px;
    border-radius:8px;
    border:1px solid var(--border);
}

.modal-buttons{
    display:flex;
    justify-content:flex-end;
    gap:15px;
    margin-top:20px;
}

/* ===========================
   TOOLBARS
=========================== */

.toolbar{
    display:flex;
    justify-content:space-between;
    gap:20px;
    margin-bottom:20px;
}

.toolbar input{
    width:300px;
    padding:12px;
    border:1px solid var(--border);
    border-radius:8px;
}

.toolbar button{
    padding:12px 18px;
    background:var(--primary);
    border:none;
    color:#fff;
    border-radius:8px;
    font-weight:600;
}

/* ===========================
   FLASH ALERTS
=========================== */

.alert{
    padding:15px;
    margin-bottom:20px;
    border-radius:8px;
    font-weight:500;
}

.success{
    background:#d4edda;
    color:#155724;
}

.error{
    background:#f8d7da;
    color:#721c24;
}

.warning{
    background:#fff3cd;
    color:#856404;
}

.info{
    background:#d1ecf1;
    color:#0c5460;
}

/* ===========================
   LOADING OVERLAY
=========================== */

#loading-overlay{
    display:none;
    position:fixed;
    left:0;
    top:0;
    right:0;
    bottom:0;
    background:rgba(255,255,255,.75);
    justify-content:center;
    align-items:center;
    z-index:9999;
}

.spinner{
    width:60px;
    height:60px;
    border-radius:50%;
    border:6px solid #ddd;
    border-top-color:var(--primary);
    animation:spin 1s linear infinite;
}

@keyframes spin{
    100%{
        transform:rotate(360deg);
    }
}

/* ===========================
   TOASTS
=========================== */

.toast{
    position:fixed;
    right:25px;
    bottom:25px;
    padding:15px 25px;
    background:var(--primary);
    color:white;
    border-radius:8px;
    opacity:0;
    transform:translateY(40px);
    transition:.3s;
    z-index:10000;
}

.toast.show{
    opacity:1;
    transform:translateY(0);
}

.toast.error{
    background:var(--danger);
}

/* ===========================
   GENERAL ELEMENTS
=========================== */

hr{
    margin:12px 0;
    border:none;
    border-top:1px solid #ececec;
}

/* ===========================
   RESPONSIVE
=========================== */

@media(max-width:1100px){
    .dashboard-panels{
        grid-template-columns:1fr;
    }
}

@media(max-width:800px){
    .app{
        grid-template-columns:1fr;
    }

    .sidebar{
        display:none;
    }

    .topbar input{
        width:100%;
    }

    .toolbar{
        flex-direction:column;
    }

    .toolbar input{
        width:100%;
    }

    .modal-window{
        width:92vw;
    }
}

/* ===========================
   FORMS
=========================== */

.form-group{

    margin-bottom:20px;

}

.form-group label{

    display:block;

    margin-bottom:8px;

    font-weight:600;

    color:var(--primary);

}

.form-group input,
.form-group select,
.form-group textarea{

    width:100%;

    padding:12px 14px;

    border:1px solid var(--border);

    border-radius:10px;

    background:white;

}

.form-group textarea{

    resize:vertical;

}

.badge.unread{

    display:inline-block;

    padding:4px 10px;

    background:#c62828;

    color:#fff;

    font-size:11px;

    font-weight:700;

    border-radius:20px;

    text-transform:uppercase;

}

/* ==========================================
   SIDEBAR BADGE
========================================== */

.nav-label{

    flex:1;

}

.sidebar-badge{

    margin-left:auto;

    width:22px;

    height:22px;

    border-radius:50%;

    background:#c62828;

    color:#fff;

    display:flex;

    align-items:center;

    justify-content:center;

    font-size:11px;

    font-weight:700;

    flex-shrink:0;

}

/* ==========================================================
   APPLICATION DASHBOARD
   ========================================================== */

.dashboard-grid{

    display:flex;

    gap:20px;

    margin:25px 0;

}

.dashboard-card{

    background:#fff;

    border:1px solid #d9d9d9;

    border-radius:8px;

    padding:20px;

    box-shadow:0 2px 4px rgba(0,0,0,.05);

    height:100%;

    box-sizing:border-box;

}

.dashboard-card h3{

    margin:0;

    font-size:14px;

    font-weight:600;

    color:#777;

    text-transform:uppercase;

    letter-spacing:.5px;

}

.dashboard-number{

    margin-top:15px;

    font-size:38px;

    font-weight:700;

    color:#1f2937;

}

.dashboard-columns{

    display:grid;

    grid-template-columns:1fr 1fr;

    gap:30px;

    margin-top:35px;

    margin-bottom:35px;

}

.dashboard-column{

    background:#ffffff;

    border:1px solid #d9d9d9;

    border-radius:8px;

    padding:20px;

}

.dashboard-column h2{

    margin-top:0;

    margin-bottom:20px;

    font-size:18px;

}

.dashboard-column .table{

    margin-bottom:0;

}

@media (max-width:1000px){

    .dashboard-columns{

        grid-template-columns:1fr;

    }

}

.dashboard-card-link{

    display:block;

    flex:1 1 20%;

    text-decoration:none;

    color:inherit;

}

.dashboard-card-link:hover .dashboard-card{

    transform:translateY(-3px);

    transition:.2s;

    box-shadow:0 8px 20px rgba(0,0,0,.12);

}

.dashboard-footer{

    margin-top:20px;

    padding-top:15px;

    border-top:1px solid #ececec;

    color:#0b66c3;

    font-size:13px;

    font-weight:600;

}

/* ===========================
   ICON SYSTEM & PAGE ACTIONS
   (shared across all modules)
=========================== */

/* ------------------------------------------------------------
   Heading Spacing
   The global h1 rule carries no bottom margin, so the
   module restores separation above the actions row.
------------------------------------------------------------ */

h1{
    margin-bottom:20px;
}

/* ------------------------------------------------------------
   Page Actions Row
   Search on the left, Add on the right. The 30px bottom
   margin creates the space between search and the table.
------------------------------------------------------------ */

.page-actions{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:20px;
    margin-bottom:30px;
}

.search-form{
    display:flex;
    align-items:center;
    gap:12px;
}

.search-form input[type="text"]{
    padding:10px 16px;
    border:1px solid var(--border);
    border-radius:var(--radius);
    background:var(--surface);
    font-family:inherit;
    font-size:14px;
    color:var(--text);
    min-width:200px;
    max-width:240px;
}

/* ------------------------------------------------------------
   Icon System
   Icons are injected from CSS via ::before, so templates
   contain only semantic anchors. Change any glyph by
   editing its content value below.
------------------------------------------------------------ */

.action-icon{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:36px;
    height:36px;
    border:none;
    border-radius:10px;
    background:rgba(2,58,81,.08);
    color:var(--primary);
    cursor:pointer;
    text-decoration:none;
    transition:background var(--transition),
               color var(--transition),
               transform var(--transition),
               box-shadow var(--transition);
}

.action-icon::before{
    font-family:"Font Awesome 6 Free";
    font-weight:900;
    font-size:15px;
    line-height:1;
}

.action-icon:hover,
.action-icon:focus-visible{
    background:var(--primary);
    color:#ffffff;
    transform:translateY(-2px);
    box-shadow:0 6px 14px rgba(2,58,81,.28);
    outline:none;
}

/* ------------------------------------------------------------
   Glyph Assignments
------------------------------------------------------------ */

.icon-search{
    width:44px;
    height:44px;
    border-radius:12px;
}

.icon-search::before{
    content:"\f002";   /* magnifying-glass */
}

.icon-add::before{
    content:"\2b";     /* plus */
}

.icon-view::before{
    content:"\f06e";   /* eye */
}

.icon-edit::before{
    content:"\f044";   /* pen-to-square */
}

.icon-archive::before{
    content:"\f187";   /* box-archive */
}

.icon-download::before{
    content:"\f019";   /* download */
}

.icon-track::before{
    content:"\f201";   /* chart-line */
}

.icon-globe::before{
    content:"\f0ac";   /* globe */
}

/* ------------------------------------------------------------
   Add Application
   The primary action on the page: larger, filled with a
   primary-to-accent gradient, white glyph.
------------------------------------------------------------ */

/* ------------------------------------------------------------
   Icon Chip
   The single shared component for every primary icon-only
   action: Add Application, Compose, Delete, Reply, New
   Application, View All Applications. Same square, same
   gradient, same shadow, same hover lift — glyph is the
   only thing that changes between uses.
------------------------------------------------------------ */

.icon-chip{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:44px;
    height:44px;
    border:none;
    border-radius:12px;
    background:linear-gradient(135deg,
        var(--primary) 0%,
        var(--accent1) 100%);
    color:#ffffff;
    box-shadow:0 6px 16px rgba(2,58,81,.30);
    cursor:pointer;
    text-decoration:none;
    transition:transform var(--transition),
               box-shadow var(--transition),
               background var(--transition);
}

.icon-chip::before{
    font-family:"Font Awesome 6 Free";
    font-weight:900;
    font-size:18px;
    line-height:1;
}

.icon-chip:hover,
.icon-chip:focus-visible{
    background:linear-gradient(135deg,
        var(--accent1) 0%,
        var(--primary) 100%);
    transform:translateY(-2px) scale(1.05);
    box-shadow:0 10px 22px rgba(2,58,81,.38);
    outline:none;
}

.icon-chip.glyph-plus::before{
    content:"\2b";   /* Add Application / New Application */
}

.icon-chip.glyph-compose::before{
    content:"\f303";   /* Compose */
}

.icon-chip.glyph-trash::before{
    content:"\f2ed";   /* Delete */
}

.icon-chip.glyph-send::before{
    content:"\f1d8";   /* Reply / Send */
}

.icon-chip.glyph-view-all::before{
    content:"\f03a";   /* View All Applications */
}

.icon-chip.glyph-save::before{
    content:"\f0c7";   /* Save */
}

.icon-chip.glyph-cancel::before{
    content:"\f00d";   /* Cancel */
}

.icon-chip.glyph-back::before{
    content:"\f060";   /* Back */
}

.icon-chip.glyph-check::before{
    content:"\f00c";   /* Mark Complete */
}

/* Kept as an alias so existing markup using .icon-add
   continues to work identically to .icon-chip.glyph-plus. */

.icon-add{
    width:44px;
    height:44px;
    border-radius:12px;
    background:linear-gradient(135deg,
        var(--primary) 0%,
        var(--accent1) 100%);
    color:#ffffff;
    box-shadow:0 6px 16px rgba(2,58,81,.30);
}

.icon-add::before{
    font-size:20px;
}

.icon-add:hover,
.icon-add:focus-visible{
    background:linear-gradient(135deg,
        var(--accent1) 0%,
        var(--primary) 100%);
    transform:translateY(-2px) scale(1.05);
    box-shadow:0 10px 22px rgba(2,58,81,.38);
}

/* ------------------------------------------------------------
   Table Action Column
   Spacing between chips and the requested 20px
   padding-right so icons sit off the table edge.
------------------------------------------------------------ */

.table td:last-child,
.table th:last-child{
    padding-right:20px;
}

.table td .action-icon + .action-icon{
    margin-left:8px;
}

/* ------------------------------------------------------------
   Inline Glyphs
   Pair .has-icon with a glyph class on any heading, button,
   or link. Add new glyphs here as single-line classes.
------------------------------------------------------------ */

.has-icon::before{
    font-family:"Font Awesome 6 Free";
    font-weight:900;
    margin-right:12px;
}

button.has-icon::before,
a.btn.has-icon::before{
    margin-right:8px;
    font-size:.9em;
}

h1.has-icon::before{
    font-size:.8em;
}

.glyph-briefcase::before{
    content:"\f0b1";   /* Job Applications */
}

.glyph-gauge::before{
    content:"\f625";   /* Applications Dashboard */
}

.glyph-plus-circle::before{
    content:"\f055";   /* Add Application */
}

.glyph-pen::before{
    content:"\f044";   /* Edit Application */
}

.glyph-save::before{
    content:"\f0c7";   /* Save / Update */
}

.glyph-cancel::before{
    content:"\f00d";   /* Cancel */
}

.glyph-bell::before{
    content:"\f0f3";   /* Reminders */
}

.glyph-list::before{
    content:"\f03a";   /* View All Applications */
}

.glyph-clock::before{
    content:"\f017";   /* Snooze */
}

.glyph-check::before{
    content:"\f00c";   /* Mark Complete */
}

/* ------------------------------------------------------------
   Pill Buttons
   Icon + label together, for header-level calls to action
   where a bare icon would lose clarity. Shares the gradient
   treatment of .icon-add for visual consistency.
------------------------------------------------------------ */

.pill-btn{
    display:inline-flex;
    align-items:center;
    gap:10px;
    padding:11px 20px;
    border-radius:999px;
    font-weight:600;
    font-size:14px;
    text-decoration:none;
    cursor:pointer;
    border:none;
    transition:transform var(--transition),
               box-shadow var(--transition),
               background var(--transition);
}

.pill-btn::before{
    font-family:"Font Awesome 6 Free";
    font-weight:900;
    font-size:14px;
    line-height:1;
}

.pill-btn:hover,
.pill-btn:focus-visible{
    transform:translateY(-2px);
    outline:none;
}

.pill-primary{
    background:linear-gradient(135deg,
        var(--primary) 0%,
        var(--accent1) 100%);
    color:#ffffff;
    box-shadow:0 6px 16px rgba(2,58,81,.30);
}

.pill-primary:hover,
.pill-primary:focus-visible{
    box-shadow:0 10px 22px rgba(2,58,81,.38);
}

.pill-secondary{
    background:var(--surface);
    color:var(--primary);
    border:1.5px solid var(--primary);
}

.pill-secondary:hover,
.pill-secondary:focus-visible{
    background:rgba(2,58,81,.06);
}

/* ------------------------------------------------------------
   Topbar Notification
------------------------------------------------------------ */

#notification-icon{
    display:inline-flex;
    align-items:center;
    color:var(--primary);
    font-weight:700;
    padding:8px 14px;
    border-radius:10px;
    transition:background var(--transition);
}

#notification-icon:hover{
    background:rgba(2,58,81,.08);
}

/* ------------------------------------------------------------
   Applications List Columns
   Fixed widths for predictable content; Company and Job
   Title share the remaining space. Actions never wraps.
------------------------------------------------------------ */

.applications-table th:nth-child(2){
    width:24%;          /* Job Title */
}

.applications-table th:nth-child(3){
    width:165px;        /* Status: "Interview Completed" */
}

.applications-table th:nth-child(4){
    width:110px;        /* Applied: date */
}

.applications-table td:nth-child(4){
    white-space:nowrap; /* keep the date on one line */
}

.applications-table th:nth-child(5){
    width:115px;        /* Employment: "Temporary" */
}

.applications-table th:nth-child(6){
    width:95px;         /* Location: "Remote" */
}

.applications-table th:nth-child(7){
    width:175px;        /* Actions: three chips */
}

.applications-table td:nth-child(7){
    white-space:nowrap;
}

/* ------------------------------------------------------------
   Applications List Row Striping
------------------------------------------------------------ */

.applications-table{
    background:var(--surface);
}

.applications-table tbody tr:nth-child(even){
    background:rgba(2,58,81,.045);
}

.applications-table tbody tr:hover{
    background:rgba(2,58,81,.08);
}.applications-table th:nth-child(1){
    width:20%;          /* Company */
}

.applications-table th:nth-child(3){
    width:10%;        /* Status: "Interview Completed" */
}

.applications-table th:nth-child(4){
    width:10%;        /* Applied: date */
}

.applications-table th:nth-child(5){
    width:10%;        /* Employment: "Temporary" */
}

.applications-table th:nth-child(6){
    width:5%;         /* Location: "Remote" */
}

.applications-table th:nth-child(7){
    width:15%;        /* Actions: three chips */
}

.applications-table td:nth-child(7){
    white-space:nowrap;
}

/* ------------------------------------------------------------
   Applications List Row Striping
------------------------------------------------------------ */

.applications-table{
    background:var(--surface);
}

.applications-table tbody tr:nth-child(even){
    background:rgba(2,58,81,.045);
}

.applications-table tbody tr:hover{
    background:rgba(2,58,81,.08);
}

.form-buttons{
    display:flex;
    gap:10px;
}


/* ============================================================
   RESPONSIVE NAVIGATION
   ============================================================ */

.nav-toggle{
    display:none;
    background:none;
    border:none;
    font-size:20px;
    color:var(--primary);
    padding:8px 12px;
    border-radius:8px;
    cursor:pointer;
}

.nav-toggle:hover,
.nav-toggle:focus-visible{
    background:rgba(2,58,81,.08);
    outline:none;
}

#sidebar-overlay{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(0,0,0,.45);
    z-index:1400;
}

#sidebar-overlay.open{
    display:block;
}

@media(max-width:800px){

    .nav-toggle{
        display:inline-flex;
        align-items:center;
        justify-content:center;
    }

    .app{
        grid-template-columns:1fr;
    }

    .sidebar{
        position:fixed;
        top:0;
        left:0;
        bottom:0;
        width:280px;
        transform:translateX(-100%);
        transition:transform var(--transition);
        z-index:1500;
        display:flex;
    }

    .sidebar.open{
        transform:translateX(0);
        box-shadow:0 0 40px rgba(0,0,0,.25);
    }

}

/* ============================================================
   MAIN DASHBOARD — RESPONSIVE
   ============================================================ */

@media(max-width:800px){

    .dashboard-grid{
        display:grid;
        grid-template-columns:1fr 1fr;
        gap:15px;
    }

    .dashboard-panels{
        grid-template-columns:1fr;
    }

}

@media(max-width:420px){

    .dashboard-grid{
        gap:12px;
    }

    .metric-number{
        font-size:32px;
    }

}

/* ============================================================
   APPLICATIONS DASHBOARD — RESPONSIVE
   ============================================================ */

@media(max-width:800px){

    .page-header{
        flex-direction:column;
        align-items:flex-start;
        gap:16px;
    }

    .dashboard-columns{
        grid-template-columns:1fr;
    }

    .dashboard-header-actions{
        flex-wrap:wrap;
    }

}

/* Recent Applications — extra breathing room between rows */

.dashboard-header-actions{
    display:flex;
    gap:10px;
    margin-top: 30px;
}

.applications-dashboard-recent tbody tr{
    border-bottom:8px solid var(--background);
}

.applications-dashboard-recent td{
    padding-top:16px;
    padding-bottom:16px;
}

/* Mobile stacking for this table now comes from the shared
   .mobile-card-rows component; see that section below. */

/* ============================================================
   INBOX — RESPONSIVE
   ============================================================ */

@media(max-width:800px){

    .inbox-container{
        grid-template-columns:1fr;
        height:auto;
        min-height:calc(100vh - 160px);
    }

    .inbox-toolbar{
        gap:12px;
    }

    .conversation-panel{
        display:none;
    }

    .message-item{
        cursor:pointer;
    }

    .message-accordion-body{
        display:none;
        padding:18px 20px 22px 46px;
        border-bottom:1px solid #ececec;
        background:#fafbfc;
    }

    .message-item.expanded{
        background:#eef5fb;
    }

    .message-item.expanded .message-preview{
        display:none;
    }

    .message-accordion-body.open{
        display:block;
    }

    .accordion-loading{
        color:var(--muted);
        font-size:14px;
    }

}


/* ============================================================
   MOBILE CARD ROWS
   Shared label-free stacked-card treatment for any data
   table on small screens. Apply alongside a table's own
   class. First cell renders bold as the row's title; the
   last cell (typically action icons) sits below it.
   ============================================================ */

@media(max-width:800px){

    .mobile-card-rows thead{
        display:none;
    }

    .mobile-card-rows,
    .mobile-card-rows tbody,
    .mobile-card-rows tr,
    .mobile-card-rows td{
        display:block;
        width:100%;
        max-width:100%;
    }

    .mobile-card-rows tbody tr{
        border:1px solid var(--border);
        border-radius:var(--radius);
        margin-bottom:15px;
        padding:16px;
        background:var(--surface);
        box-sizing:border-box;
    }

    .mobile-card-rows td{
        padding:6px 0;
        border-bottom:none;
        word-break:break-word;
        overflow-wrap:break-word;
    }

    .mobile-card-rows td:first-child{
        font-weight:700;
        color:var(--primary);
        font-size:16px;
        padding-top:0;
    }

    .mobile-card-rows td:last-child{
        padding-top:10px;
        padding-bottom:0;
        white-space:normal;
    }

    .mobile-card-rows .action-icon{
        margin-right:8px;
        margin-bottom:8px;
    }

}


/* ============================================================
   UPCOMING INTERVIEWS — CARD ROWS
   Matches the visual language of the mobile stacked-card
   tables: bordered, rounded, separated by margin rather
   than a rule line.
   ============================================================ */

.interview-card{
    border:1px solid var(--border);
    border-radius:var(--radius);
    padding:14px 16px;
    margin-bottom:12px;
    background:var(--surface);
}

.interview-card:last-child{
    margin-bottom:0;
}

.interview-card strong{
    color:var(--primary);
    display:block;
    margin-bottom:4px;
}

/* ============================================================
   INBOX — COMPOSE UNDER SEARCH, ALWAYS
   ============================================================ */

.inbox-toolbar{
    flex-direction:column;
    align-items:stretch;
    gap:12px;
}

.compose-btn{
    align-self:flex-start;
}

/* ============================================================
   MOBILE CONVERSATION — FULL BLEED, NO PADDING
   ============================================================ */

@media(max-width:800px){

    .message-accordion-body{
        width:100vw;
        position:relative;
        left:50%;
        right:50%;
        margin-left:-50vw;
        margin-right:-50vw;
        padding:0;
    }

    .conversation-header,
    .original-message,
    .conversation-replies,
    .reply-panel{
        padding-left:10px;
        padding-right:10px;
    }

}


/* ------------------------------------------------------------
   Read-only Address Display
   The auto-filled company address textarea on the
   applications form is informational only.
------------------------------------------------------------ */

textarea[readonly]{
    background:var(--background);
    color:var(--muted);
    resize:none;
    cursor:default;
}

select{
    height:48px;
    padding:12px 14px;
}

.form-group select{
    height:48px;
}

.search-form select,
.toolbar select{
    height:44px;
}

/* ------------------------------------------------------------
   Current File Link
   Shown under a file input in edit mode when a resume or
   cover letter has already been uploaded for this application.
------------------------------------------------------------ */

.file-current{
    margin-top:8px;
    font-size:13px;
    color:var(--muted);
}

.file-current a{
    color:var(--primary);
    font-weight:600;
    text-decoration:underline;
}

/* ------------------------------------------------------------
   Documents Table
------------------------------------------------------------ */

.no-document{
    color:var(--muted);
    font-size:16px;
}


/* ------------------------------------------------------------
   Interview Scheduling (Application Form)
------------------------------------------------------------ */

.icon-add-interview::before{
    content:"\2b";     /* plus */
}

.interview-row{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:15px 20px;
    padding:16px;
    border:1px solid var(--border);
    border-radius:var(--radius);
    margin-bottom:15px;
    background:var(--surface);
}

.interview-row .form-group{
    margin-bottom:0;
}

.interview-row .form-group:nth-child(3),
.interview-row .form-group:nth-child(4){
    grid-column:1 / -1;
}

.scheduled-interviews{
    margin-bottom:15px;
}

.scheduled-interview-card{
    border:1px solid var(--border);
    border-radius:var(--radius);
    padding:14px 16px;
    margin-bottom:10px;
    background:var(--background);
}

.scheduled-interview-card strong{
    color:var(--primary);
}

.scheduled-interview-card span{
    color:var(--muted);
    margin-left:6px;
}

.scheduled-interview-card p{
    margin-top:8px;
    color:var(--text);
    font-size:14px;
    line-height:1.5;
}

@media(max-width:700px){

    .interview-row{
        grid-template-columns:1fr;
    }

    .interview-row .form-group:nth-child(3),
    .interview-row .form-group:nth-child(4){
        grid-column:auto;
    }

}


/* ------------------------------------------------------------
   Documents & Interviews Table Striping
   Same treatment as the applications list table.
------------------------------------------------------------ */

.documents-table,
.interviews-table,
.jobboards-table,
.socialmedia-table{
    background:var(--surface);
}

.documents-table tbody tr:nth-child(even),
.interviews-table tbody tr:nth-child(even),
.jobboards-table tbody tr:nth-child(even),
.socialmedia-table tbody tr:nth-child(even){
    background:rgba(2,58,81,.045);
}

.documents-table tbody tr:hover,
.interviews-table tbody tr:hover,
.jobboards-table tbody tr:hover,
.socialmedia-table tbody tr:hover{
    background:rgba(2,58,81,.08);
}

.jobboards-table td a{
    color:var(--primary);
    text-decoration:underline;
    word-break:break-all;
}


/* ============================================================
   REMINDERS
   ============================================================ */

/* Bell turns red while any reminder is currently snoozed */

#notification-icon.snoozing{
    color:var(--danger);
}

#notification-icon.snoozing:hover{
    background:rgba(198,40,40,.10);
}

/* Forced reminder popup */

.reminder-modal .modal-window{
    max-width:480px;
}

.reminder-modal .modal-window p{
    margin-top:12px;
    color:var(--text);
    line-height:1.5;
}

.reminder-modal-meta{
    color:var(--muted) !important;
    font-size:13px;
    margin-top:10px !important;
}

.reminder-modal-buttons{
    position:absolute;
    right:30px;
    bottom:30px;
    margin-top:0;
}

.reminder-modal .modal-window{
    position:relative;
    padding-bottom:150px;
}

.reminder-snooze-stack{
    position:absolute;
    left:30px;
    bottom:30px;
    display:flex;
    flex-direction:column;
    gap:12px;
}

.reminder-snooze-option{
    display:inline-flex;
    align-items:center;
    gap:8px;
    color:var(--primary);
    font-weight:600;
    font-size:14px;
    cursor:pointer;
    background:none;
    border:none;
    padding:0;
    text-align:left;
}

.reminder-snooze-option:hover,
.reminder-snooze-option:focus-visible{
    color:var(--accent1);
    outline:none;
}

.reminder-snooze-option i{
    font-size:14px;
    width:16px;
}

/* Reminders table */

.reminders-table{
    background:var(--surface);
}

.reminders-table tbody tr:nth-child(even){
    background:rgba(2,58,81,.045);
}

.reminders-table tbody tr:hover{
    background:rgba(2,58,81,.08);
}

.reminders-table tr.reminder-snoozing{
    background:rgba(198,40,40,.06);
}

.reminder-checkbox{
    width:20px;
    height:20px;
    cursor:pointer;
}


/* ============================================================
   SOCIAL MEDIA MODULE
   ============================================================ */

.log-stats-heading{
    font-weight:700;
    color:var(--primary);
    margin-bottom:15px;
}

.stat-row{
    display:grid;
    grid-template-columns:1fr 1fr 1fr;
    gap:15px;
}

.stat-row .form-group{
    margin-bottom:15px;
}

@media(max-width:600px){

    .stat-row{
        grid-template-columns:1fr;
    }

}

#track-chart{
    max-width:100%;
    margin-top:10px;
}


/* ============================================================
   MAIN DASHBOARD — REDESIGN
   ============================================================ */

/* Five cards, evenly spanning the viewport on desktop.
   Fully self-contained: does not share a class name with
   the applications-dashboard's card row further down this
   file, since that rule redefines display and would
   otherwise silently win the cascade and break this. */

.main-dashboard-cards{
    display:grid;
    grid-template-columns:repeat(5, 1fr);
    gap:20px;
    margin-bottom:30px;
}

@media(max-width:1100px){

    .main-dashboard-cards{
        grid-template-columns:repeat(3, 1fr);
    }

}

@media(max-width:800px){

    .main-dashboard-cards{
        grid-template-columns:repeat(2, 1fr);
    }

}

@media(max-width:480px){

    .main-dashboard-cards{
        grid-template-columns:1fr;
    }

}

.metric-goal{
    margin-top:8px;
    font-size:12px;
    color:var(--muted);
}

.metric-on-goal{
    color:var(--success);
}

.metric-below-goal{
    color:var(--danger);
}

/* Three charts, evenly spanning the width together */

.dashboard-charts{
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:20px;
    margin-bottom:30px;
}

.chart-card h2{
    font-size:16px;
    margin-bottom:15px;
}

@media(max-width:1100px){

    .dashboard-charts{
        grid-template-columns:1fr 1fr;
    }

}

@media(max-width:700px){

    .dashboard-charts{
        grid-template-columns:1fr;
    }

}

/* Recent Applications, Upcoming Interviews, and Reminder
   Queue each take the full width and stack vertically.
   Fully self-contained, does not share a class name with
   the base .dashboard-panels rule and its align-items:start,
   which would otherwise leak through and prevent these
   from stretching to full width. */

.dashboard-panels-full{
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:20px;
}

.dashboard-panels-full .card{
    width:100%;
}


/* ============================================================
   LOGIN — MOBILE
   ============================================================ */

@media(max-width:800px){

    .login-card{
        width:80%;
        height:auto;
        padding:40px 28px;
        text-align:center;
    }

    .login-card .logo{
        display:flex;
        justify-content:center;
    }

    .login-card h1 {
        text-align: center;
        font-size: 26pt;
    }
    .login-card p{
        text-align: center;
        font-size:21pt;
    }

    .login-card label{
        font-size:21pt;
        text-align:center;
    }

    .login-card input{
        font-size:21pt;
        padding:18px;
        height:auto;
    }

    .login-card button{
        font-size:21pt;
        padding:20px;
    }

    .login-card .alert{
        font-size:21pt;
    }

}


/* ============================================================
   COMPANIES — SEARCH-AS-FILTER DROPDOWN
   ============================================================ */

.company-filter-form{
    width:50%;
}

.company-filter-form select{
    width:100%;
}

@media(max-width:800px){

    .company-filter-form{
        width:100%;
    }

}


/* ------------------------------------------------------------
   Company Notes
------------------------------------------------------------ */

.company-note-card{
    margin-bottom:15px;
}

.company-note-meta{
    font-size:13px;
    color:var(--muted);
    margin-bottom:8px;
}

.company-note-body{
    line-height:1.6;
}


/* ============================================================
   DETAILS TABLE (Company View, etc.)
   ============================================================ */

.details-table{
    table-layout:fixed;
}

.details-table td{
    word-break:break-word;
    overflow-wrap:break-word;
}

@media(max-width:700px){

    .details-table,
    .details-table tbody,
    .details-table tr,
    .details-table th,
    .details-table td{
        display:block;
        width:100% !important;
    }

    .details-table th{
        border-bottom:none;
        padding-bottom:4px;
        color:var(--primary);
    }

    .details-table td{
        padding-top:0;
        padding-bottom:16px;
    }

}


/* ------------------------------------------------------------
   Companies Table — Column Widths (Desktop)
   Company 50%, Applications 15%, Last Application 20%,
   Actions 15%. Four columns now that Contacts is removed.
------------------------------------------------------------ */

.companies-table th:nth-child(1){
    width:50%;
}

.companies-table th:nth-child(2){
    width:15%;
}

.companies-table th:nth-child(3){
    width:20%;
}

.companies-table th:nth-child(4){
    width:15%;
}

/* ------------------------------------------------------------
   Companies Table — Mobile
   Restored to the same reduced view as before Contacts was
   removed: Company, Applications, and the action icons only.
   Last Application (now column 3, where Contacts used to be)
   stays hidden on mobile even though it shows on desktop.
------------------------------------------------------------ */

@media(max-width:700px){

    .companies-table td:nth-child(3){
        display:none;
    }

    .companies-table td:nth-child(2)::before{
        content:"Applications: ";
        font-weight:600;
        color:var(--primary);
    }

}


/* ============================================================
   APPLICATIONS DASHBOARD — STATUS PIE + TOP CITY
   ============================================================ */

.dashboard-column-stacked{
    display:flex;
    flex-direction:column;
    gap:20px;
}

.dashboard-column-stacked .chart-card{
    background:#fff;
    border:1px solid #d9d9d9;
    border-radius:8px;
    padding:20px;
}

.dashboard-column-stacked .chart-card h2{
    font-size:16px;
    margin-bottom:15px;
}

.top-city-card{
    text-align:center;
}


/* ------------------------------------------------------------
   Reminder Recipients
------------------------------------------------------------ */

.reminder-recipient-option{
    display:flex;
    align-items:center;
    gap:8px;
    font-weight:400;
    margin-bottom:8px;
    cursor:pointer;
}

.reminder-recipient-option input{
    width:auto;
}

.reminder-recipient-hint{
    font-size:12px;
    color:var(--muted);
    margin-top:4px;
}


/* ------------------------------------------------------------
   Job Boards Filters
------------------------------------------------------------ */

.jobboards-filters select{
    min-width:150px;
}

@media(max-width:900px){

    .jobboards-filters{
        flex-wrap:wrap;
    }

    .jobboards-filters input[type="text"],
    .jobboards-filters select{
        width:100%;
        max-width:none;
    }

}


/* ------------------------------------------------------------
   Companies List — Alphabetical Letter Headings
------------------------------------------------------------ */

.companies-letter-heading td{
    background:var(--background);
    font-weight:700;
    color:var(--primary);
    font-size:16px;
    padding:10px 12px;
    border-bottom:2px solid var(--border);
}

.companies-table tbody tr.companies-letter-heading:hover,
.jobboards-table tbody tr.companies-letter-heading:hover{
    background:var(--background);
}


/* ------------------------------------------------------------
   Companies List — Alphabet Jump Strip
------------------------------------------------------------ */

.companies-alphabet{
    display:flex;
    flex-wrap:wrap;
    gap:4px;
    margin-bottom:15px;
    padding:12px 16px;
    background:var(--surface);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
}

.companies-alphabet a,
.companies-alphabet span{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:26px;
    height:26px;
    font-weight:700;
    font-size:13px;
    border-radius:6px;
}

.companies-alphabet a{
    color:var(--primary);
    cursor:pointer;
    transition:background var(--transition),
               color var(--transition);
}

.companies-alphabet a:hover,
.companies-alphabet a:focus-visible{
    background:var(--primary);
    color:#ffffff;
    outline:none;
}

.companies-alphabet span{
    color:var(--border);
}


/* ============================================================
   LIST TOOLBAR
   Shared wrapper for Companies and Job Boards: add button,
   search icon, search field, then the three filter dropdowns,
   all left-aligned with a consistent 30px gap. Deliberately
   independent of the older .toolbar and .page-actions rules,
   which carry unrelated styling (.toolbar button in particular
   forces a solid background onto any button inside it).
   ============================================================ */

.list-toolbar{
    display:flex;
    align-items:center;
    justify-content:flex-start;
    flex-wrap:wrap;
    gap:10px;
    margin-bottom:20px;
}

.list-toolbar-filters{
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
}

.list-toolbar-filters input[type="text"]{
    padding:10px 16px;
    border:1px solid var(--border);
    border-radius:var(--radius);
    background:var(--surface);
    font-family:inherit;
    font-size:14px;
    color:var(--text);
    min-width:200px;
    max-width:240px;
}

.list-toolbar-filters select{
    min-width:150px;
}

@media(max-width:900px){

    .list-toolbar-filters{
        flex-wrap:wrap;
    }

    .list-toolbar-filters input[type="text"],
    .list-toolbar-filters select{
        width:100%;
        max-width:none;
    }

}


/* ------------------------------------------------------------
   Salary + See Notes (Application Form)
------------------------------------------------------------ */

.salary-row{
    display:flex;
    align-items:center;
    gap:15px;
}

.salary-row input[type="text"]{
    flex:1;
}

.salary-see-notes-option{
    display:flex;
    align-items:center;
    gap:8px;
    font-weight:400;
    white-space:nowrap;
    cursor:pointer;
}

.salary-see-notes-option input{
    width:auto;
}

/* ------------------------------------------------------------
   Field Hint Text
------------------------------------------------------------ */

.field-hint{
    margin-top:6px;
    font-size:12px;
    color:var(--muted);
}


/* ------------------------------------------------------------
   View Page Button Row (Companies, Applications)
   Shared by both detail-view pages: left-aligned, 10px apart.
------------------------------------------------------------ */

.page-actions-row{
    display:flex;
    justify-content:flex-start;
    align-items:center;
    gap:10px;
    margin-top:10px;
    margin-bottom:20px;
}


/* ------------------------------------------------------------
   Field With Add Button (City fields with an inline "+")
------------------------------------------------------------ */

.field-with-add{
    display:flex;
    align-items:center;
    gap:10px;
}

.field-with-add select{
    flex:1;
}

/* ------------------------------------------------------------
   Add City Modal
   Same modal-window look as every other modal, but with a
   50% black overlay specifically, rather than the app's
   usual 45%.
------------------------------------------------------------ */

.add-city-modal{
    background:rgba(0,0,0,.5);
}

.add-city-modal .modal-window{
    max-width:480px;
}
