.home-screen.yuanxiao-grid-stack {
    display: block;
    min-height: 650px;
    padding: 10px 16px 0;
    overflow: visible;
    touch-action: none;
}

.home-screen.yuanxiao-grid-stack > .grid-stack-item {
    margin: 0;
    min-width: 0;
}

.home-screen.yuanxiao-grid-stack > .grid-stack-item.app-icon,
.home-screen.yuanxiao-grid-stack .yuanxiao-dock-grid > .grid-stack-item.app-icon {
    width: auto;
    height: auto;
    cursor: pointer;
}

html[data-desktop-editing="true"] .home-screen.yuanxiao-grid-stack > .grid-stack-item.app-icon,
html[data-desktop-editing="true"] .home-screen.yuanxiao-grid-stack .yuanxiao-dock-grid > .grid-stack-item.app-icon {
    cursor: grab;
}

html[data-desktop-editing="true"] .home-screen.yuanxiao-grid-stack > .grid-stack-item:active,
html[data-desktop-editing="true"] .home-screen.yuanxiao-grid-stack .yuanxiao-dock-grid > .grid-stack-item:active {
    cursor: grabbing;
}

.home-screen.yuanxiao-grid-stack > .grid-stack-item.widget-base {
    width: auto;
    height: auto;
}

.home-screen.yuanxiao-grid-stack #widget-dock .yuanxiao-dock-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: start;
    gap: 4px;
    margin: 0;
    height: 84px;
    min-height: 82px;
    overflow: visible;
}

.home-screen.yuanxiao-grid-stack #widget-dock .yuanxiao-dock-grid.is-admin {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

.home-screen.yuanxiao-grid-stack > #widget-dock {
    display: block;
    position: absolute;
    top: 520px;
    left: 16px;
    right: 16px;
    width: auto;
    height: 84px;
    margin: 0;
    z-index: 260;
}

.home-screen.yuanxiao-grid-stack .ui-resizable-handle {
    display: none !important;
}

.home-screen.yuanxiao-grid-stack .grid-stack-placeholder > .placeholder-content {
    border: 1px dashed rgba(255, 255, 255, 0.75);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.18);
}

/* A 1x2 cell is an app icon. Keep its collision cell intact, but draw the
   placeholder close to the visible 58px icon instead of as a wide block. */
.home-screen.yuanxiao-grid-stack > .grid-stack-placeholder[gs-w="1"][gs-h="2"] > .placeholder-content {
    left: 50%;
    right: auto;
    width: 66px;
    transform: translateX(-50%);
    border-radius: 16px;
}

.home-screen.yuanxiao-grid-stack .yuanxiao-dock-grid > .grid-stack-placeholder > .placeholder-content {
    left: 50%;
    right: auto;
    width: 66px;
    transform: translateX(-50%);
    border-radius: 16px;
}

.home-screen.yuanxiao-grid-stack .grid-stack-item.ui-draggable-dragging {
    z-index: 200;
}

.home-screen.yuanxiao-grid-stack [data-desktop-hidden="true"] {
    display: none !important;
}

.yuanxiao-delete-control {
    position: absolute;
    top: 3px;
    right: 3px;
    z-index: 220;
    display: none;
    width: 24px;
    height: 24px;
    padding: 0;
    align-items: center;
    justify-content: center;
    border: 2px solid rgba(255, 255, 255, 0.92);
    border-radius: 999px;
    background: #ff3b30;
    color: #fff;
    font: 700 20px/18px system-ui, sans-serif;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
    touch-action: manipulation;
}
.yuanxiao-widget-size-control{position:absolute;top:3px;left:3px;z-index:220;display:none;width:26px;height:24px;padding:0;align-items:center;justify-content:center;border:2px solid rgba(255,255,255,.92);border-radius:999px;background:#3478f6;color:#fff;font:800 14px/1 system-ui;box-shadow:0 2px 8px rgba(0,0,0,.35)}
html[data-desktop-editing="true"] .yuanxiao-widget-size-control{display:flex}

html[data-desktop-editing="true"] .yuanxiao-delete-control {
    display: flex;
}

.yuanxiao-widget-sandbox {
    display: block;
    background: transparent;
}

html[data-desktop-editing="true"] .yuanxiao-widget-sandbox {
    pointer-events: none;
}

.yuanxiao-edit-toolbar {
    position: fixed;
    top: max(10px, env(safe-area-inset-top));
    left: 50%;
    z-index: 5000;
    display: flex;
    width: min(370px, calc(100vw - 24px));
    min-height: 46px;
    padding: 7px 8px 7px 14px;
    align-items: center;
    gap: 8px;
    transform: translateX(-50%);
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 16px;
    background: rgba(22, 22, 25, 0.94);
    color: #fff;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    font-size: 13px;
}

.yuanxiao-edit-toolbar[hidden] {
    display: none !important;
}

.yuanxiao-edit-toolbar > span {
    margin-right: auto;
    font-weight: 700;
}

.yuanxiao-edit-toolbar button {
    min-height: 32px;
    padding: 0 11px;
    border: 0;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.14);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
}

.yuanxiao-edit-toolbar button[data-action="done"] {
    background: #3478f6;
}

/* 方形组件的提示和自定义文字始终与组件本身水平、垂直居中。 */
.home-screen.yuanxiao-grid-stack .square-widget > .relative.z-10 {
    align-items: center !important;
    justify-content: center !important;
    text-align: center;
}

.home-screen.yuanxiao-grid-stack .square-widget > .relative.z-10 > p {
    width: 100%;
    text-align: center;
}

/* 平板和电脑上保持“小手机”比例，避免 4 列桌面被横向拉得过散。 */
@media (min-width: 600px) {
    body {
        display: flex;
        align-items: center;
        justify-content: center;
        background: #111;
    }

    #app {
        width: min(430px, 100vw) !important;
        height: min(932px, var(--yuanxiao-viewport-height, 100vh)) !important;
        flex: 0 0 auto;
        overflow: hidden;
        border-radius: 28px;
        box-shadow: 0 18px 60px rgba(0, 0, 0, 0.38);
    }
}
html[data-desktop-editing="true"] .yx-custom-widget>*:not(.yuanxiao-delete-control){pointer-events:none!important}

.yuanxiao-calendar-widget{display:block;width:auto;height:auto;padding:18px;border:1px solid rgba(255,255,255,.72);border-radius:28px;background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(244,231,239,.82));color:#453840;text-align:left;box-shadow:0 18px 42px rgba(69,45,58,.13);backdrop-filter:blur(18px);overflow:hidden}
.yx-calendar-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:13px}.yx-calendar-head small{display:block;font-size:10px;letter-spacing:.12em;opacity:.56}.yx-calendar-head strong{display:block;font:750 28px/1.15 Georgia,"Songti SC",serif}.yx-calendar-head>span{font-size:10px;padding:7px 9px;border-radius:999px;background:rgba(113,63,83,.1)}.yx-calendar-week,.yx-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.yx-calendar-week span{text-align:center;font-size:9px;opacity:.48}.yx-calendar-grid span{position:relative;display:grid;place-items:center;min-height:34px;border-radius:10px;font-size:11px}.yx-calendar-grid span.is-today{box-shadow:inset 0 0 0 2px currentColor;font-weight:800}.yx-calendar-grid span.is-period{background:#f4a5b9;color:#fff}.yx-calendar-grid span.is-predicted{background:#ffe3eb;color:#a33f5b}.yx-calendar-grid span.is-checked:after{content:"";position:absolute;right:3px;top:3px;width:5px;height:5px;border-radius:50%;background:#5b4ee8}.yx-calendar-foot{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:9px;opacity:.72}.yx-calendar-foot i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px}.period-dot{background:#f4a5b9}.check-dot{background:#5b4ee8}.yx-calendar-foot b{margin-left:auto}.yx-custom-widget{background:var(--yuanxiao-widget-bg,rgba(255,255,255,.78));color:var(--yuanxiao-widget-color,inherit)}
